写一个hexdump C程序,用来将数组以16进制形式打印,中间数组需要先转字符串
时间: 2024-03-12 19:45:02 浏览: 44
好的,以下是一个简单的hexdump C程序,它将一个数组转换为16进制字符串并以16进制形式打印:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void hexdump(const void* data, size_t size) {
char hex[3];
hex[2] = '\0';
char* str = malloc(size * 2 + 1);
size_t i;
for (i = 0; i < size; ++i) {
sprintf(hex, "%02X", ((unsigned char*)data)[i]);
strcat(str, hex);
}
printf("%s\n", str);
free(str);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
size_t arr_size = sizeof(arr);
hexdump(arr, arr_size);
return 0;
}
```
这个程序将数组 `arr` 转换为16进制字符串,并将其打印到控制台上。中间变量 `str` 存储转换后的字符串,然后将其打印出来。您可以将 `arr` 替换为您自己的数组。
相关问题
写一个hexdump C程序,用来将数组转为16进制字符串
好的,以下是一个简单的hexdump C程序,它将一个数组转换为16进制字符串:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void hexdump(const void* data, size_t size) {
char ascii[17];
size_t i, j;
ascii[16] = '\0';
for (i = 0; i < size; ++i) {
printf("%02X ", ((unsigned char*)data)[i]);
if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') {
ascii[i % 16] = ((unsigned char*)data)[i];
} else {
ascii[i % 16] = '.';
}
if ((i+1) % 8 == 0 || i+1 == size) {
printf(" ");
if ((i+1) % 16 == 0) {
printf("| %s \n", ascii);
} else if (i+1 == size) {
ascii[(i+1) % 16] = '\0';
if ((i+1) % 16 <= 8) {
printf(" ");
}
for (j = (i+1) % 16; j < 16; ++j) {
printf(" ");
}
printf("| %s \n", ascii);
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
size_t arr_size = sizeof(arr);
hexdump(arr, arr_size);
return 0;
}
```
这个程序将数组 `arr` 转换为16进制字符串,并将其打印到控制台上。您可以将 `arr` 替换为您自己的数组。
一个只有0和1的数组转16进制字符串
以下是Python代码实现:
```python
def binary_to_hex(binary):
# 检查二进制数组长度是否为4的倍数
if len(binary) % 4 != 0:
binary = [0] * (4 - (len(binary) % 4)) + binary
# 将二进制数组转换为16进制字符串
hex_str = ''
for i in range(0, len(binary), 4):
hex_digit = 8 * binary[i] + 4 * binary[i+1] + 2 * binary[i+2] + binary[i+3]
hex_str += hex(hex_digit)[2:]
return hex_str.upper()
```
示例:
```python
>>> binary = [1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1]
>>> binary_to_hex(binary)
'A58C1'
```
阅读全文