I have this struct:
struct block{
uint8_t *tBlock;
}
这个结构体将有1024字节,因此使用tBlock = malloc(1024)
。
我有一个整数,想要将其写入4个字节中,即小端模式下的tBlock[0]到tBlock[3]。我有以下代码:
uint8_t little[4];
void inttolitend(uint32_t x, uint8_t* lit_int){
lit_int[3] = (uint8_t)x / (256*256*256);
lit_int[2] = (uint8_t)(x % (256*256*256)) / (256*256);
lit_int[1] = (uint8_t)((x % (256*256*256)) % (256*256)) / 256;
lit_int[0] = (uint8_t)((x % (256*256*256)) % (256*256)) % 256;
}
但是当我执行以下操作:
int x = 7;
inttolitend(x, little);
我得到了 little[0] = 7, little[1] = 0, little[2] = 0 和 little[3] = 0,所以我的转换器完全失败了。如何在4个字节中获得 uint8_t 类型的 7?
(uint8_t)x / (256*256*256)
的意思与((uint8_t)x) / (256*256*256)
相同,但你想要的是(uint8_t)(x / (256*256*256))
。 - user253751