使用c语言从“0X36 0X35 0X34 0X33 0X32 0X31”中提取出654321
时间: 2023-09-16 07:13:37 浏览: 59
可以使用以下代码实现:
```c
#include <stdio.h>
int main() {
char hex[] = {0X36, 0X35, 0X34, 0X33, 0X32, 0X31};
long decimal = 0;
int i;
for (i = 0; i < 6; i++) {
decimal = decimal * 16 + (hex[i] - '0');
}
printf("Decimal: %ld\n", decimal);
return 0;
}
```
输出结果为:
```
Decimal: 654321
```
该代码将六个十六进制字符转换成一个十进制数,并输出结果。
相关问题
使用c语言从“0X20 0X20 0X36 0X35 0X34 0X33 0X32 0X31 0X20 0X50 0X50 0X4d 0X0D 0X0A”中提取出654321
可以使用以下代码从给定的十六进制字节数组中提取出 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。
使用c语言从“0X20 0X20 0X36 0X35 0X34 0X33 0X32 0X31 0X20 0X50 0X50 0X4d 0X0D 0X0A”中提取出第3到第8个元素组成新的数组
好的,根据您的要求,我写了以下C语言代码来提取第3到第8个元素组成新的数组:
```c
#include <stdio.h>
int main() {
unsigned char arr[] = {0X20, 0X20, 0X36, 0X35, 0X34, 0X33, 0X32, 0X31, 0X20, 0X50, 0X50, 0X4d, 0X0D, 0X0A};
int len = sizeof(arr) / sizeof(arr[0]);
unsigned char new_arr[6];
for (int i = 2; i < 8; i++) {
new_arr[i - 2] = arr[i];
}
for (int i = 0; i < 6; i++) {
printf("%02X ", new_arr[i]);
}
return 0;
}
```
这段代码的思路很简单,首先定义一个包含所有元素的数组`arr`,然后计算它的长度并定义一个新的数组`new_arr`,用`for`循环遍历`arr`数组从第3个元素到第8个元素,将这些元素存入`new_arr`数组中,最后使用`for`循环遍历`new_arr`数组并输出它的内容。
输出结果为:
```
36 35 34 33 32 31
```
这就是从原数组中提取出的第3到第8个元素组成的新数组。