将一个 2 字节整数转换并分解为 2 个不同的 uchar,C++具有 endianess 兼容性

Convert and break a 2 byte integer into 2 different uchars in C++ with endianess compatibility

本文关键字:uchar C++ 兼容性 endianess 具有 一个 字节 转换 整数 分解      更新时间:2023-10-16

我想转换一个无符号的int并将其分解为2个uchar。

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

我应该用语言来表达,a[0] 应该保持 3,a[1] 应该保持 1这应该与大端和小端系统兼容。

我试过了:

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

但是,这有字节序问题

字节

序不是问题:

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

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