【发布时间】:2017-05-11 20:00:19
【问题描述】:
我有一个 unsigned char 数组,我想将它的前四个元素解析为 HEX 值。
我收到了unsiged char array a[],这是谁的内容
for (int i = 0; i < l; i++) {
SerialUSB.print(" Index : ");
SerialUSB.print(i);
SerialUSB.print(" ,Unsigned Char ");
SerialUSB.print( a[i]);
SerialUSB.print(", CHAR ");
SerialUSB.print( (char) a[i]);
SerialUSB.println();
}
Index:0 ,Unsigned Char 98, CHAR b
Index:1 ,Unsigned Char 49, CHAR 1
Index:2 ,Unsigned Char 53, CHAR 5
Index:3 ,Unsigned Char 57, CHAR 9
Index:4 ,Unsigned Char 55, CHAR 7
Index:5 ,Unsigned Char 56, CHAR 8
Index:6 ,Unsigned Char 85, CHAR U
Index:7 ,Unsigned Char 55, CHAR 7
Index:8 ,Unsigned Char 56, CHAR 8
Index:9 ,Unsigned Char 85, CHAR U
Index:10 ,Unsigned Char 55, CHAR 7
Index:11 ,Unsigned Char 56, CHAR 8
Index:12 ,Unsigned Char 85, CHAR U
如何获取数组a[]的前四个元素的HEX值
inHex[0] = 0xB; // 0xB = 11
inHex[1] = 0x15; // which should come from having concatenated the values `a[1]= '1'` algong with `a[2]='2'`
inHex[3] = 0x9; // which should be the char value of a[3] in HEX
提前致谢。
【问题讨论】:
-
@ndarkness 即使您更新了问题,我也完全不明白您要做什么。你能写清楚一些东西,而不用猜测
a等是什么吗?! -
你有 char * a = "b159 ... ",那你为什么说
a[2]='2'呢?您想为0xb、0x1、0x5、0x9中的每一个获得 4 个不同的整数吗? -
inHex[0] = 0x11; // which should come from having converted toHEX( (char) a[0] )- 这完全是一团糟,没有任何意义。它不是十六进制,而是来自十六进制,toHex 的结果是一个字符串,如果你想获取整数,那么它来自十六进制。b或 'B' 如果被视为十六进制数字,则表示11,或0xb如果写入十六进制。 -
@ndarkness 为什么那个'b'变成
0x11!?你了解自己吗?为什么第二个 0x15 是由 strcat(a[1],a[2]) 形成的? -
@ndarkness
b I would interpreate it as the HEXadecimal representation B- 有什么区别?0xb== 0xB