我有这个结构:
t_scene *scene
我把它投在无效*
void *base = (void *)scene;
手动移动到某个字段(出于某些原因,需要手动移动它)
void *param = base + sizeof(int);
现在,如果我想取消引用它,我需要在int *中转换param:
*(int *)param = 12;
我有办法用字节值来解除折射吗? 这样的事情:
*(sizeof(int)*)param = 12;
提前感谢!
答案 0 :(得分:1)
我想你问的是如何访问结构中的特定字节。 Typecast指向数组的指针,然后将其作为数组访问。例如:
unsigned char *byteArray = (unsigned char *)scene;
byteArray[4] = 12; //sets the fifth byte (offsets start at 0) to 12.
答案 1 :(得分:1)
我建议您使用位屏蔽而不是使用潜在的UB。例如,如果t_scene
是32位类型:
uint8_t lower_byte = scene & 0xff;
...
uint8_t high_byte = (scene >> 24) & 0xff;