使用字节顺序兼容性在C ++中将2字节整数转换为2个不同的字符

时间:2014-11-20 00:05:35

标签: c++ byte endianness

我想转换一个unsigned int并将其分成2个uchars。

For example: 
uint16 current = 23;
uchar a[2];

我应该把它放在单词中,因为a [0]应该保持3而a [1]应该保持1 这应该与big endian和little endian系统兼容。

我试过了:

uint16 final = 23;
uchar a[2];
uint16 *current = (uint16 *)a;
*current = final;

但是,这有字节序问题

1 个答案:

答案 0 :(得分:1)

Endianness不是一个问题:

uint16_t a = 23;
uint8_t b[2];
b[0] = a & 0xff;
b[1] = a >> 8;

b[0]将始终为低位字节,b[1]为高位字节。