代码之家  ›  专栏  ›  技术社区  ›  Corey Ogburn

有关endian ness和.net的详细信息?

  •  25
  • Corey Ogburn  · 技术社区  · 14 年前

    我有几个关于尾数的问题,这些问题足够相关,我保证将它们作为一个问题放进去:

    1)endian ness是由.net决定还是由硬件决定?

    2)如果是由硬件决定的,我如何才能确定硬件在C中的尾数?

    3)endian ness是否影响二进制交互,如ORS、ANDS、XORS或移位?也就是说,向右移动一次,是否总是从最低有效位移走?

    4)我对此表示怀疑,但不同版本的.NET框架在结尾处是否存在差异?我假设它们都是一样的,但是我已经学会了停止假设一些较低层次的细节,比如这个。

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

    2 回复  |  直到 14 年前
        1
  •  29
  •   Stephen Cleary    14 年前

    1)硬件。

    2) BitConverter.IsLittleEndian

    3)endianness不影响按位运算。右移是以最低有效位方向移动。 从oops的评论更新: 然而,endianness确实会影响二进制输入和输出。当读取或写入大于一个字节的值时(例如,读取 int 从A BinaryReader 或使用 BitConverter ,您必须考虑到结尾。一旦正确读取了这些值,那么所有按位操作都将正常工作。

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

        2
  •  0
  •   OlimilOops    14 年前

    1)既不是也不是……或者你可以说
    这是由硬件开发人员决定的。如果您编写的软件读取/写入某些文件格式而不使用外部库,则必须决定是否执行此操作。
    如果从文件中读取数据,那么endiannes没有问题。
    *字节
    但是你必须决定如何用小尾数或大尾数格式解释它 如果读取所有其他基本数据类型,如
    *整数,
    *字符串,
    *浮动。
    硬件在这里不起作用。这个婊子养的在这里没用。当然,只有文件格式的文档可以帮助测试您的代码…
    编辑:找到了很好的解释: http://betterexplained.com/articles/understanding-big-and-little-endian-byte-order/