我希望使用指针一次移动一个字节的十六进制转储,直到找到一个特定的X字节长的字节序列。为此,我需要将指针转换为X字节的大小。例如,3字节大小的指针。我知道如果我想要它是2字节,我可以简单地使用uint16_t,或者如果我想它是4字节,我可以简单地使用uint32_t。但这两种方法都不能解决这个问题。
我必须从指向我所在位置的内存块的开头开始,这样我就可以一次移动一个字节。我怎样才能做到这一点而又不丢掉那个职位呢?
发布于 2015-04-04 11:15:01
这是不可能的。如果您的系统没有任何使用3字节存储空间的类型,那么您就不能拥有指向此类类型的指针。相反,您应该使用unsigned char *并从它所指向的位置读取字节,然后对它们执行某些操作。
例如,如果这3个字节是int的最低有效3个字节,采用大端格式,您可以这样写:
unsigned char *ptr = /* find the right location */;
unsigned int foo = ptr[0] * 0x10000u + ptr[1] * 0x100u + ptr[2];https://stackoverflow.com/questions/29442298
复制相似问题