【发布时间】:2022-11-13 12:19:08
【问题描述】:
我是 C 新手,我做了一个 loadbyte 函数,它应该从特定内存位置的 32 位字返回一个字节。
#include <stdint.h>;
#define MEM_SIZE 4096
int32_t mem[MEM_SIZE];
union uniao{
int32_t word;
int8_t bytes[4];
};
int32_t lb(uint32_t address, int32_t kte){
union uniao memory;
int32_t endereco = address + kte;
int32_t index = endereco / 4;
memory.word = mem[index];
return memory.bytes[endereco % 4];
};
问题是,例如,如果mem[1] = fcfdfeff 和我调用lb(4,0),它返回ffffffff 而不是000000ff(字节ff 和其他槽填充为0)。我该如何解决?
【问题讨论】:
-
使用无符号类型?