我试图将十六进制值放入 Byte[]
,试图实现 78,66,1E,B5,4F,E7,67,63
#define BYTE unsigned char
int num = 1;
long long hex[]
{
0x78661EB54FE76763,
};
int main()
{
for (int c = 0; c < num; c++)
{
printf("%llx\n", hex[c]);
unsigned int number = hex[c];
unsigned int ef = number & 0xff;
unsigned int cd = (number >> 8) & 0xff;
unsigned int ab = (number >> 16) & 0xff;
printf("%x", number & 0xff);
BYTE data2[8]{
ef, cd, ab
};
}
}
更新:
基本上我有一个包含 30 个奇数十六进制值的数组。我正在尝试遍历名为 hex[] 的数组,然后将每个十六进制值分成 2,即 78,66,1E,B5,4F,E7,67,63,然后将每个添加到 BYTE 类型的数组中将十六进制值保存为 8 对,因此 data[0] 的值为 78 到 data[8] 的值为 63,因此我可以将 BYTE 类型的数组传递给另一种方法以进行进一步的工作
最佳答案
这是您想要的解决方案:
#include <stdio.h>
typedef unsigned char BYTE;
int main()
{
int i,j;
long long hex=0x78661EB54FE76763;
BYTE val[8];
for(j=0,i=7; i>=0; i--,j++){
val[j]= (hex>>(i*8))&0xff;
}
printf("Hexadecimal bytes are:\n");
for(j=0;j<8;j++){
printf("%02X ",val[j]);
}
return 0;
}
输出是:
Hexadecimal bytes are:
78 66 1E B5 4F E7 67 63
关于c - 将十六进制放入字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41003693/