c语言 十进制数 12345678 转换成数组 0x12 0x34 0x56 0x78 的程序
时间: 2024-10-01 10:12:21 浏览: 27
在C语言中,将一个10进制数转换为十六进制数组的形式,可以先将10进制数转换为十六进制字符串,然后再逐个字符解析并存入数组。这里是一个简单的例子:
```c
#include <stdio.h>
#include <string.h>
// 十进制转十六进制
char* dec_to_hexadecimal(int decimal) {
char hex[10];
sprintf(hex, "%X", decimal); // "%X"表示无前导零的十六进制格式
return hex;
}
// 将10进制数分割成数组
void int_to_hex_array(int number, unsigned char hex_array[]) {
char hex_str[10];
strcpy(hex_str, dec_to_hexadecimal(number)); // 获取字符串形式的十六进制数
int len = strlen(hex_str); // 获取字符串长度
for (int i = 0; i < len / 2; i++) { // 只取后半部分,因为每个十六进制数字对应4位二进制
hex_array[i] = (unsigned char)(hex_str[len - 1 - i] - '0'); // 将字符转换为数值
}
}
int main() {
int decimal_num = 12345678;
unsigned char hex_array[4];
int_to_hex_array(decimal_num, hex_array);
// 输出结果
for (int i = 0; i < 4; i++) {
printf("0x%02X ", hex_array[i]); // '%02X'保证始终是两位十六进制数,不足两位用0填充
}
return 0;
}
```
上述代码首先定义了一个辅助函数`dec_to_hexadecimal`,它将10进制数转换为十六进制字符串。接着,`int_to_hex_array`函数从字符串中提取每一位十六进制数字,并将其放入数组。注意,我们只处理后半部分,因为十六进制每位对应4位二进制,所以我们只需要每两字符对应一个数组元素。
阅读全文