日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ASCII码、HEX、字符、BCD 等等 基础知识思考

發布時間:2023/12/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASCII码、HEX、字符、BCD 等等 基础知识思考 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

每每遇到這些問題就要想個半天,想不明白還不舒服,今天特別把所想整理下避免以后再次進入思想漩渦!!!

計算機存儲和傳輸都是以字節為單位
??????? 1 bit???? = 1? 二進制數據
??????? 1 byte? = 8? bit
??????? 1 字母 = 1? byte = 8 bit
??????? 1 漢字 = 2? byte = 16 bit
1. bit:位
??? 一個二進制數據0或1,是1bit;
2. byte:字節
??? 存儲空間的基本計量單位,如:MySQL中定義 VARCHAR(45)? 即是指 45個字節;
??? 1 byte = 8 bit
3. 一個英文字符占一個字節;
??? 1 字母 = 1 byte = 8 bit
4. 一個漢字占2個字節;
??? 1 漢字 = 2 byte = 16 bit
5. 標點符號
??? A>.? 漢字輸入狀態下,默認為全角輸入方式;
??? B>.? 英文輸入狀態下,默認為半角輸入方式;
??? C>.? 全角輸入方式下,標點符號占2字節;
??? D>.? 半角輸入方式下,標點符號占1字節;


? ? 故:漢字輸入狀態下的字符,占2個字節 (但不排除,自己更改了默認設置);
???????? 英文輸入狀態下的字符,占1個字節 (但不排除,自己更改了默認設置);

ASCII碼
  因為信息在計算機上是用二進制表示的,這種表示法讓人理解就很困難。因此計算機上都配有輸入和輸出設備,這些設備的主要目的就是,
以一種人類可閱讀的形式 將信息在這些設備上顯示出來供人閱讀理解。為保證人類和設備,設備和計算機之間能進行正確的信息交換,人們編
制的統一的信息交換代碼,這就是ASCII碼表,它的全稱是“美國信息交換標準代碼”。

BCD碼
  BCD碼(Binary-Coded Decimal?)亦稱二進碼十進數或二-十進制代碼。用4位二進制數來表示1位十進制數中的0~9這10個數碼。是一種二
進制的數字編碼形式,用二進制編碼的十進制代碼。BCD碼這種編碼形式利用了四個位元來儲存一個十進制的數碼,使二進制和十進制之間的轉
換得以快捷的進行。

asc2hex
?? ??? ?就是字符串轉化成16進制數字 如:“4321”? 0x34 0x33 0x32 0x31 --> 0x43 0x21
?? ??? ?
hex2asc
?? ??? ?就是16進制數字轉化成字符串 如: 0x43 0x21 --> “4321”? 0x34 0x33 0x32 0x31
?? ??? ?
以下給出兩種實現方法:

unsigned char ascii_table[16] = {'0', '1', '2', '3', '4', '5', '6', '7','8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };void hex2asc(unsigned char dat, unsigned char **new) {**new = ascii_table[dat >> 4];*new += 1;**new = ascii_table[dat & 0x0f];*new += 1; }int asc2hex(unsigned char dat, unsigned char *new) {if ((dat >= '0') && (dat <= '9'))*new = dat - '0';else if ((dat >= 'A') && (dat <= 'F'))*new = dat - 'A' + 10;else if ((dat >= 'a') && (dat <= 'f'))*new = dat - 'a' + 10;elsereturn -1;return 0; }void hex2str(unsigned char *read, unsigned char **write, int len) {while (len--)hex2asc(*read++, write); }int str2hex(unsigned char *read, unsigned char *write, int len) {unsigned char dat;while (len--) {if (asc2hex(*read++, &dat))return -1;*write = *write << 4 | dat;if (!(len & 1)) {++write;}}return 0; }

?

轉載于:https://www.cnblogs.com/uriel/p/4533840.html

總結

以上是生活随笔為你收集整理的ASCII码、HEX、字符、BCD 等等 基础知识思考的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。