我正在从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位整数“级联”。
如果不进行类型调整,则可以执行以下操作。
uint64_t data = 0;
for (int i=0; i<6; i++)
{
data <<= 8;
data |= (uint64_t) buf[i];
}
Run Code Online (Sandbox Code Playgroud)