【发布时间】:2016-12-06 19:52:40
【问题描述】:
我正在尝试将十六进制值放入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 类型的数组传递给另一种方法以进行进一步的工作
【问题讨论】:
-
这不会按原样编译。因为
long long hex[]是一个带有初始值设定项的声明,所以该语句在第一个花括号之前需要一个=符号:{,并且在结束花括号之后是一个C 语句终止符:;:}。并且0x78661EB54FE76763后面的逗号应该去掉。 -
现在将为您编译,更新
-
你一直在说“基本上我有一个包含 30 个奇数十六进制值的数组。”。你是什么意思,你的样本显示一长一长,价值一大。你真正的起始数据是什么,在问题中显示出来