c# - 关于 Endian-ness 和 .Net 的详细信息?

标签 c# .net endianness

我有几个关于字节序的问题,这些问题足够相关,我保证将它们作为一个问题提出:

1) 字节顺序是由.Net 还是硬件决定的?

2) 如果是由硬件决定的,我如何在 C# 中找出硬件的字节序?

3) endian-ness 是否影响二进制交互,例如 OR、AND、XOR 或移位? IE。向右移位一次是否总是移出最低有效位?

4) 我对此表示怀疑,但是不同版本的 .Net 框架在字节顺序上是否存在差异?我假设它们都是一样的,但我已经学会停止假设一些较低级别的细节,例如这个。

如果需要,我可以将这些问题作为不同的问题提出,但我认为知道其中一个问题答案的任何人都可能知道所有问题的答案(或者可以为我指出一个好的方向)。

最佳答案

1) 硬件。

2) BitConverter.IsLittleEndian

3) 字节顺序不影响按位运算。向右移动是向最低有效位方向移动。 根据 Oops 的评论更新:但是,字节顺序确实会影响二进制输入和输出。当读取或写入大于一个字节的值时(例如,从 BinaryReader 读取 int 或使用 BitConverter),您必须考虑字节序。正确读入值后,所有按位运算都会正常运行。

4) 大多数版本的 .NET 都是小端。值得注意的异常(exception)包括 XBox 和一些受 Mono 或 Compact Framework 支持的平台。

关于c# - 关于 Endian-ness 和 .Net 的详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3162986/

相关文章:

c# - 如何在 MVC 环境中的母版页顶部显示 Welcome "CurrentUserName"?

c# - 如何在 c# Azure Function 项目中的多个类中重用 ILogger?

.net - 我可以使用仅面向 .NET 4.6.1 的 ASP.NET Core 吗?

c++ - Big Endian 和 Little Endian 支持字节排序

c - 为什么在命令行参数的情况下将命令 char 双指针转换为 char 不起作用?

java - 是否可以在android中捕获屏幕截图并将其保存到统一的图库中

c# - RestClient 应该是单例还是为每个请求创建新实例

c# - Net.HttpClient 取消 ReadAsStringAsync?

.net - .NET 中队列 <T> 的大小限制?

c++ - C++ 中的字节翻转数据仅返回零