我的内存中有一个4096K二进制文件,格式为little-endian。我想以uint16_t
的形式读取几个8位值,该如何以最高效的方式进行呢?
void execute_cart (i6507_t* cpu, uint8_t* memory) {
// uint16_t start = memory[0xFFFC]; // this address contains a 16 bit value
}
更新:我正在x86-64拱上运行,二进制文件用于旧的8位控制台。
答案 0 :(得分:1)
您需要分别读取两个字节,并将它们组合成一个uint16_t
变量:
unsigned offset = 0xfffc;
uint16_t start = memory[offset];
start |= (uint16_t)memory[offset+1] << 8;
如果 memory
开始的地址对齐正确,并且如果偏移量是2的倍数,则可以一次读取:
uint16_t start = *(uint16_t *)&memory[0xfffc];