使用c语言从“0X20 0X20 0X36 0X35 0X34 0X33 0X32 0X31 0X20 0X50 0X50 0X4d 0X0D 0X0A”中提取出654321
时间: 2023-09-16 14:13:37 浏览: 158
想成为嵌入式程序员应知道的0x10个基本问题
可以使用以下代码从给定的十六进制字节数组中提取出 654321:
```c
#include <stdio.h>
int main() {
unsigned char hex_arr[] = {0X20, 0X20, 0X36, 0X35, 0X34, 0X33, 0X32, 0X31, 0X20, 0X50, 0X50, 0X4D, 0X0D, 0X0A};
int num = 0;
// 遍历字节数组中的每个元素,将其转换为对应的数字
for (int i = 0; i < sizeof(hex_arr); i++) {
if (hex_arr[i] >= '0' && hex_arr[i] <= '9') {
num = (num << 4) + (hex_arr[i] - '0');
} else if (hex_arr[i] >= 'A' && hex_arr[i] <= 'F') {
num = (num << 4) + (hex_arr[i] - 'A' + 10);
}
}
printf("%d\n", num); // 输出结果:654321
return 0;
}
```
上述代码中,我们首先定义了一个无符号字符数组 `hex_arr`,其中存储了给定的十六进制字节序列。接着我们定义了一个整型变量 `num`,用于存储最终的数字结果。
在遍历字节数组中的每个元素时,我们首先判断该元素是否为数字 0~9 或大写字母 A~F,如果是,则将其转换为对应的十进制数字,然后将其添加到 `num` 变量的末尾。由于我们遍历的是字节数组,因此需要先将 `num` 左移 4 位(相当于乘以 16),再加上当前元素对应的数字值。
最后,我们输出 `num` 的值,即可得到提取出的 654321。
阅读全文