有关Endian-ness和.Net的详细信息?

我有一些关于endian-ness的问题已经足够相关,我保证将它们作为一个问题加入:

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

2)如果由硬件决定,我怎样才能弄清楚硬件在C#中的端点?

3)endian-ness是否影响二进制交互,如OR,AND,XOR或移位? IE将向右移动一次总是偏离最低位?

4)我对此表示怀疑,但是.Net框架的不同版本的endian-ness存在差异吗? 我假设他们都是一样的,但我已经学会停止假设一些较低级别的细节,比如这个。

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

1)硬件。

2) BitConverter.IsLittleEndian

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

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

1)既不也不…或者你也可以说
它是由硬件开发人员决定的。 如果您编写的软件在不使用外部库的情况下读取/写入某些文件格式,您必须自行决定。
endiannes没有问题如果您从文件中读取
*一个字节
但如果你阅读所有其他原始数据类型,你必须决定如何以小端或大端格式解释它
*整数,
*字符串,
*漂浮。
硬件在这里没有帮助。 BitConverter在这里没有帮助。 只有文件格式的文档可以帮助和测试您的代码当然…
编辑:在这里找到了很好的解释: http : //betterexplained.com/articles/understanding-big-and-little-endian-byte-order/