求解答 ::每一个十六进制数转化为两个需要发送的ASCII码。 函数代码的含义 shell 脚本文件十六进制转化为ascii码代码

ASCII\u8f6c16\u8fdb\u5236C\u8bed\u8a00

\u4ee5\u524d\u5f15\u522b\u4eba\u7684\uff0c\u81ea\u5df1\u61d2\u5f97\u518d\u5199\u4e86\u5475\u5475\u3002\u539f\u7406\u5c31\u662f\u8fd9\u6837\u7684\uff0c\u4f60\u53ef\u4ee5\u76f4\u63a5\u7528\u7684

//\u51fd \u6570 \u540d\uff1aAscToHex()
//\u529f\u80fd\u63cf\u8ff0\uff1a\u628aASCII\u8f6c\u6362\u4e3a16\u8fdb\u5236
unsigned char AscToHex(unsigned char aHex){

if((aHex>=0)&&(aHex<=9))

aHex += 0x30;

else if((aHex>=10)&&(aHex<=15))//A-F

aHex += 0x37;

else aHex = 0xff;

return Hex;
}

//\u51fd \u6570 \u540d\uff1aHexToAsc()
//\u529f\u80fd\u63cf\u8ff0\uff1a\u628a16\u8fdb\u5236\u8f6c\u6362\u4e3aASCII
unsigned char HexToAsc(unsigned char aChar){

if((aChar>=0x30)&&(aChar<=0x39))

aChar -= 0x30;

else if((aChar>=0x41)&&(aChar<=0x46))//\u5927\u5199\u5b57\u6bcd

aChar -= 0x37;

else if((aChar>=0x61)&&(aChar<=0x66))//\u5c0f\u5199\u5b57\u6bcd

aChar -= 0x57;

else aChar = 0xff;

return aChar;
}

---\u8865\uff1a\u8fd8\u662f\u6211\u8ba4\u4e3a\u7684\u90a3\u6837\uff0c\u6211\u8fd8\u662f\u89c9\u5f97\u7528C\u8bed\u8a00\u7684\u5b57\u7b26\u4e32\u64cd\u4f5c\u51fd\u6570\u5148\u5206\u5272\uff0c\u518d\u5faa\u73af\u6c42\u51fa\u6bcf\u4e2a\u7684ASCII\uff0c\u518d\u8fde\u63a5

\u5341\u516d\u8fdb\u5236\u7684A\u8f6c\u5316\u4e3a\u5341\u8fdb\u5236ASCII\u7801\uff1a
printf "%d\n" "'A"
\u5341\u516d\u8fdb\u5236\u7684A\u8f6c\u5316\u4e3a\u5341\u516d\u8fdb\u5236ASCII\u7801\uff1a
printf "%x\n" "'A"

cSrc 中的高四位、低四位,分别都是一位16进制数 0~9, A~F。

0~9,变成ASCII码,需要加上0x30;
A~F,变成ASCII码,需要加上0x37。
这是规则。

下面就是按照规则,分别变换高、低四位:

if(cSrc / 16 < 0x0a) cDst_H = cSrc/16 +0x30;
else cDst_H = cSrc/16 +0x37;

if(cSrc % 16 < 0x0a)cDst_L = cSrc%16 +0x30;
else cDst_L = cSrc%16 +0x37;

扩展阅读:十六进制在线转换器 ... 十六进制表 ... 十六进制计算在线 ... 三三剩二简单的讲解 ... 十六进制字母对照表 ... 十六进制在线转换查询 ... 十转十六进制方法 ... 十六进制怎么表达 ... 二进制口诀表 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网