如何使用 memcpy 在 char 数组中设置 2 个十六进制字节数据
How to use memcpy to set 2 hex byte data in char array
我需要将字符数组 x[11]
的十六进制值存储到内存 space: char* content
。
字符数组的内容如下:
{'b', '5', 'a', '8', 'a', 'e', 'a', 'b', 'c', '7', '\n'}
并且我需要保存除\n
之外的十个元素。以下是我的做法:
char *content = (char *)calloc(msg_len, sizeof(char));
memcpy(content , x, 10);
内存 space 输出最终为 ASCII 格式:
62(b) 35(5) 61(a) 38(8) 61(a) ...
但我希望它在内存中显示的是:
b5 a8 ae ab c7
就像上面显示的字符数组一样。
我可以采取什么步骤来解决这个问题?
这样的东西行得通吗?
#include <stdio.h>
int main() {
char x[] = {'b', '5', 'a', '8', 'a', 'e', 'a', 'b', 'c', '7', '\n'};
unsigned long long a;
unsigned char b[5];
sscanf(x, "%llx\n", &a);
b[0] = a >> 32;
b[1] = (a >> 24);
b[2] = (a >> 16);
b[3] = (a >> 8);
b[4] = a ;
for(int i = 0; i < 5; i++) {
printf("%x ", b[i]);
}
printf("\n");
return 0;
}
我需要将字符数组 x[11]
的十六进制值存储到内存 space: char* content
。
字符数组的内容如下:
{'b', '5', 'a', '8', 'a', 'e', 'a', 'b', 'c', '7', '\n'}
并且我需要保存除\n
之外的十个元素。以下是我的做法:
char *content = (char *)calloc(msg_len, sizeof(char));
memcpy(content , x, 10);
内存 space 输出最终为 ASCII 格式:
62(b) 35(5) 61(a) 38(8) 61(a) ...
但我希望它在内存中显示的是:
b5 a8 ae ab c7
就像上面显示的字符数组一样。
我可以采取什么步骤来解决这个问题?
这样的东西行得通吗?
#include <stdio.h>
int main() {
char x[] = {'b', '5', 'a', '8', 'a', 'e', 'a', 'b', 'c', '7', '\n'};
unsigned long long a;
unsigned char b[5];
sscanf(x, "%llx\n", &a);
b[0] = a >> 32;
b[1] = (a >> 24);
b[2] = (a >> 16);
b[3] = (a >> 8);
b[4] = a ;
for(int i = 0; i < 5; i++) {
printf("%x ", b[i]);
}
printf("\n");
return 0;
}