【问题标题】:c# byte order in a byte array? [duplicate]c#字节数组中的字节顺序? [复制]
【发布时间】:2013-06-07 21:16:11
【问题描述】:

我有一个代表图片(bgra)的字节数组。 我想知道 c# byte[] 中字节的顺序是什么。 字节是用小端还是大端表示的?

感谢您的阅读。

【问题讨论】:

  • 询问 BitConverter.IsLittleEndian

标签: c# c#-4.0 endianness


【解决方案1】:

Luke 是对的,但我想知道是否有人可以编写代码来证明这一点(没有 BitConvert.IsLittleEndian)

ushort word = 0x0001;  // 16bit word with lsb set
var bits = new BitArray(BitConvert.GetBytes());

if (bits[0]) {
    // little endian
} else if (bits[8]) { 
    // big endian
}

为 Sinatr 编辑

【讨论】:

  • 我喜欢它,它是一个非常干净的证明
  • 我认为字节序与bytes有关,而不是位。你能详细说明一下吗?我会尝试以某种方式存储一个单词(只有低字节集),然后将其作为字节数组读取,并查看第一个字节是否为零。
【解决方案2】:

Windows 是 little endian,所以如果你在运行 c#,你可能会使用 little endian

【讨论】:

  • 好的,谢谢,但是是否可以将订单交换为大字节序(这可能是一个非常愚蠢的问题,但我的图片表示有问题,我认为它来自一个字节的订单数组)。
  • 这个答案没有帮助。它不依赖于 C#,而是依赖于字节数组的来源。您可以在 C# 中同时使用(小端或大端)。
  • 在此处查看如何在 c# social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/… 中反转字节顺序
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-11
  • 2023-03-08
  • 1970-01-01
  • 2019-03-15
相关资源
最近更新 更多