如何将数组的值设置为单个变量

Mig*_*iaz 0 c arrays

我正在从ARM micro的SD卡中读取值:

Res = f_read(&fil, (void*)buf, 6, &NumBytesRead);
Run Code Online (Sandbox Code Playgroud)

where fil是指针,buf是存储数据的缓冲区。

这就是问题所在:这是一个数组,但我想将该数组的内容放在单个变量中。

举一个实际的例子:从文件中读取的6个字节是:

buf[0] = 0x1B
buf[1] = 0x26
buf[2] = 0xB3
buf[3] = 0x54
buf[4] = 0xA1
buf[5] = 0xCF
Run Code Online (Sandbox Code Playgroud)

我想拥有:uint64_t data等于 0x1B26B354A1CF。也就是说,数组的所有元素都以一个64位整数“级联”。

kir*_*dar 6

如果不进行类型调整,则可以执行以下操作。

uint64_t data = 0;
for (int i=0; i<6; i++)
{
  data <<= 8;
  data |= (uint64_t) buf[i];
}
Run Code Online (Sandbox Code Playgroud)