如何检查系统是大端还是小端?如何检查系统是大端还是小端?
回答
如果您使用的是.NET:请检查BitConverter.IsLittleEndian
的值。
另一个C代码使用联合
union {
int i;
char c[sizeof(int)];
} x;
x.i = 1;
if(x.c[0] == 1)
printf("little-endian\n");
else printf("big-endian\n");
它是belwood使用的相同的逻辑。
虽然我认为这不符合标准:您只能从最后一次写入的枚举中读取该字段,否则可能会出现未定义的行为,或者我误会了? – worenga 2016-03-14 11:53:57
工会没有在标准中指定“证明”。这是不正确的解决方案(它可能会在特定的操作系统/压缩机中意外工作)。 – jaskmar 2016-12-30 19:46:20
有些人可以解释一下上面的程序中的逻辑。如果初始化成员变量i,x.1 = 1,那么x.c [0]如何变成1.我在这里错过了一些观点吗?我的理解是,union会记住最大的数据类型,并依赖于我们可以访问的数据类型。只能访问一个成员。任何回应将被高度暗示 – 2018-02-13 08:44:52
A C++溶液:
namespace sys {
const unsigned one = 1U;
inline bool little_endian()
{
return reinterpret_cast<const char*>(&one) + sizeof(unsigned) - 1;
}
inline bool big_endian()
{
return !little_endian();
}
} // sys
int main()
{
if(sys::little_endian())
std::cout << "little";
}
'reinterpret_cast'不能在常量表达式中使用。 – 2014-10-11 13:17:51
@ T.C。尔加!太糟糕了。 Thnx :) – Galik 2014-10-11 13:30:50
在Linux中,`
static union { char c[4]; unsigned long mylong; } endian_test = { { 'l', '?', '?', 'b' } };
#define ENDIANNESS ((char)endian_test.mylong)
if (ENDIANNESS == 'l') /* little endian */
if (ENDIANNESS == 'b') /* big endian */
与Neeraj的版本有什么不同? – 2016-07-29 09:56:13
在Python:
from sys import byteorder
print(byteorder)
我觉得这是最简单和最好的答案,谢谢! – mdandr 2017-02-10 18:44:37
一个班轮用Perl(其应该是默认上安装几乎所有系统):
perl -e 'use Config; print $Config{byteorder}'
如果输出以1(最低有效字节)开始,则它是一个小端系统。如果输出以较高的数字(最重要的字节)开始,则它是一个大端系统。请参阅Config模块的文档。
- 1. 查找系统是小端还是大端用Perll
- 2. 要大端还是小端?
- 3. 这段代码是否真的知道系统是小端还是大端?
- 4. 如何检查系统是12小时还是24小时?
- 5. 如何找到单片机是大端还是小端?
- 6. 确定系统是否使用大端或小端使用C
- 7. 方法String.getBytes()是大端序还是小端序?
- 8. 如何检查是否UDP端口是打开还是关闭
- 9. 如何检查当前操作系统是win8还是蓝色
- 10. 系统属性检查实例是否是后端?
- 11. 如何使用SNMP检查端口是向上还是向下
- 12. 任何人都知道Nvidia的GPU是大还是小端?
- 13. 应该前端限制列表大小还是后端?
- 14. 如何检查文件扩展名是大写还是小写?
- 15. 如何检查int输入是大于2147436647还是小于-2147483648?
- 16. 时间检查:服务器端还是客户端?
- 17. 如何检查Pyro4客户端是否还活着
- 18. 如何检查客户端连接是否还活着
- 19. Windows NDIS筛选器 - 如何检查操作系统是否使用端口
- 20. 如何在J2ME中检查系统日期/时间是12小时还是24小时格式
- 21. PowerShell脚本来检查端口是打开还是关闭
- 22. 如何知道我们的系统使用C++的小端或大端?
- 23. 如何检查端口是否可用
- 24. 如何在Wix Installer中检查系统是Windows 7还是Windows Server 2008 R2?
- 25. 如何检查当前的操作系统是Windows,Linux还是OSX?
- 26. 如何检查node.js脚本是在终端还是网络上运行?
- 27. 如何检查linux系统是否使用大磁盘空间?
- 28. 结构大小,检查是64位还是32位
- 29. RegEx用于检查数字是小于还是大于
- 30. 检查值是大于还是小于指定值
好的答案,但是这提供了一个很好的图表:http://stackoverflow.com/a/12792301/803801 – gsingh2011 2013-10-15 23:17:09
这真的是一个很好的图 - 谢谢你添加它。 – belwood 2014-02-21 23:33:03