我还没有在大端处理器上进行过测试,但是这总是给我一个最不重要的字节?
int i = 12345678;
unsigned char c = static_cast<unsigned char>(i);
Run Code Online (Sandbox Code Playgroud)
是的,这将始终为您提供最不重要的字节.C++规范(§4.7/ 2)保证缩小转换总是通过返回与原始整数一致的最小值(模2 n)来丢弃最重要的字节,其中n是目标类型中的位数.
也就是说,不能保证a unsigned char是单字节.所有这一切都得到保证sizeof(char) == 1.但是,如果将一个字节视为能够容纳字符的最小内存单元,那么这应该可以正常工作.