获得最不重要的字节

时间:2011-02-20 10:27:26

标签: c++

我还没有在大端处理器上进行过测试,但是这总是给我一个最不重要的字节吗?

int i = 12345678;
unsigned char c = static_cast<unsigned char>(i);

2 个答案:

答案 0 :(得分:5)

是的,这将始终为您提供最不重要的字节。 C ++规范(§4.7/ 2)保证缩小转换总是通过返回与原始整数一致的最小值(模2 n )来丢弃最重要的字节,其中n是位数在目标类型中。

也就是说,不能保证unsigned char是单个字节。所有这一切都得到保证sizeof(char) == 1。但是,如果将一个字节视为能够容纳字符的最小内存单元,那么这应该可以正常工作。

答案 1 :(得分:0)

以下也不会有效吗?

int i = 12345678;
unsigned char c = (i % 256);

int i = 12345678;
unsigned char c = (i & 255);
相关问题