转换/转换字节数组到地址

时间:2017-06-09 02:39:58

标签: c++ endianness

所以我有一个地址,其中有一个vftable的偏移量。它以字节存储在程序集中。例如:03 c3 bd 0c

我想获取字节,并将它们转换为小地址样式。

byte[0] = ((unsigned char *)addr)[3];
byte[1] = ((unsigned char *)addr)[2];
byte[2] = ((unsigned char *)addr)[1];
byte[3] = ((unsigned char *)addr)[0];

所以示例的输出将是0x0cbdc303。

我该如何正确编码?

2 个答案:

答案 0 :(得分:0)

byte[0] = ((unsigned char *)addr)[3];
byte[1] = ((unsigned char *)addr)[2];
byte[2] = ((unsigned char *)addr)[1];
byte[3] = ((unsigned char *)addr)[0];

后面应该是

uint32_t address = (byte[0] << 24)|(byte[1] << 16)|(byte[2] << 8)|(byte[3]);

当然,您可以摆脱byte[]并将原始值替换为此值。

答案 1 :(得分:-1)

所以你有一个小端设备,并希望将4个小端字节转换为单个4字节数。这可以通过这种方式轻松完成:

@Override
public void serialize(String x, JsonGenerator jGenerator, SerializerProvider provider)
        throws IOException {
}