我想知道是否有更好的方法而不是向uint8_t
转换void指针,然后根据偏移量进行算术运算,然后将其转换为uint32_t
,然后取消引用它以获得4byte值在那个确切的偏移处。
void * foo = malloc(1024);
uint32_t myVar;
for(int i = 0; i < 10; i++)
{
myVar = *((uint32_t*)((uint8_t *) foo + nOffset));
nOffset += 100;
}
答案 0 :(得分:1)
你最好只保留在指针算术的一个“域”内。
你应该这样做 uint32_t * foo = malloc(1024);
然后
myVar = foo + nOffset / sizeof(*foo);
nOffset += 100;
或
myVar = foo + nOffset;
nOffset += 100 / sizeof(*foo);
每步增加100个字节。