小端与大端
大端 = 0x31014950
小端 = 0x50490131
然而使用这种方法
inline unsigned int endian_swap(unsigned int& x)
{
return ( ( (x & 0x000000FF) << 24 ) |
( (x & 0x0000FF00) << 8 ) |
( (x & 0x00FF0000) >> 8 ) |
( (x & 0xFF000000) >> 24 ) );
}
结果 = 0x54110131
我花了很多时间尝试很多类似的方法,甚至是一个像这样的库
unsigned long _byteswap_ulong(unsigned long value);
但仍然没有运气..都返回相同的结果
EDIT
我正在使用 Microsoft Visual Studio 2008 开发 Little-Endian 系统
示例如下
int main()
{
unsigned int y = 0x31014950;
unsigned int r = endian_swap( y );
std::cout << r;
}
Ideone.com 上发布的示例是正确的..但它对我不起作用
EDIT
std::cout << std::hex << r;
不管是十六进制还是十六进制,它都没有得到正确的数字.. Visual Studio 在它的调试器或我的整个机器中出现了严重错误..
因为我用更慢的冗余代码替换了整个代码,但仍然得到相同的结果
顺便说一句,如果有什么区别..我正在使用调试器在函数之后中断来检查结果
- 您打印的结果正确吗?
- 您传递的是引用而不是值这一事实是否有影响?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)