我想知道是否有人可以帮助我我只是在学习 c,我正在尝试将 unsigned char 数组的内容分成两半,结果可以存储在两个 unsigned int 中,
出于示例目的,我在下面有一些代码将一个十六进制值添加到 BYTE 数组中,因此如何将 val[] 的内容分成两部分但保持相同的顺序
#include <stdio.h>
typedef unsigned char BYTE;
int main()
{
// Sample purposes putting hex into val[8]
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;
}
// How to split the contents of val[8] which now holds the hex
return 0;
}
我试图将十六进制值拆分为 78661EB5、4FE76763 并将每个值存储在一个无符号整数中,在我的示例中该整数存储在 val[8] 中
最佳答案
你的变量 long long hex
不是“字符数组”,但你可以尝试这样的事情,注意整个过程中的无符号类型。
#include <stdio.h>
#include <stdint.h>
int main(void)
{
uint64_t hex = 0x78661EB54FE76763;
uint32_t lo, hi;
hi = hex >> 32;
lo = hex & 0xFFFFFFFF;
printf("%08X %08X\n", hi, lo);
return 0;
}
程序输出:
78661EB5 4FE76763
关于c - 将 unsigned char 数组的内容分成两半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41027258/