输入:
char arr1[9] = "+100-200" // (+ is 2B, - is 2D, 1 is 31 and 2 is 32)
输出:
unsigned int arr2[4]= [0x2B31,0x3030,0x2D32,0x3030]
我该怎么做?
最佳答案
您的问题似乎不一致:0
应该转换为 0x30
,它的 ASCII 值。
为什么要这样修改,代码很简单:
char arr1[8] = "+100-200";
unsigned int arr2[4];
for (int i = 0; i < 8; i += 2) {
arr2[i / 2] = ((unsigned int)(unsigned char)arr1[i] << 8) |
(unsigned int)(unsigned char)arr1[i + 1];
}
for (int i = 0; i < 4; i++) {
printf("0x%04X ", arr2[i]);
}
printf("\n");
输出:
0x2B31 0x3030 0x2D32 0x3030
关于将 char 数组转换为 hex 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42051671/