【发布时间】:2019-12-13 19:57:45
【问题描述】:
我有一个将BitArray 值转换为byte[] 值的代码。我也从 stackoverflow 获得了代码。
代码很好用,只是有一部分没看懂。
当代码使用BitArray.CopyTo() 将BitArray 复制到Byte 时,byte 读数按LSB 顺序。
有人能帮我理解为什么转换后的字节是 LSB 顺序吗?
strBit (is a string value that consists of 1/0)
byte[] myByte = new byte[50];
List<string> list = Enumerable.Range(0, strBit.Length / 8)
.Select(i => strBit.Substring(i * 8, 8))
.ToList();
for (int x = 0; x < list.Count; x++)
{
BitArray myBitArray = new BitArray(list[x].ToString().Select(c => c == '1').ToArray());
myBitArray.CopyTo(myByte, x);
}
示例输出:
strBit[0] = 10001111 (BitArray)
当转换为字节时:
myByte[0] = 11110001 (Byte) (241/F1)
【问题讨论】:
-
因为您必须选择一些编码,而 .NET Framework 更喜欢一个/发送者发送这个?
-
我应该在哪里检查那部分?还是 .Net 框架中字节数据类型的默认值?抱歉,我是新手
-
你不得不猜测对方正在使用的编码。 joelonsoftware.com/2003/10/08/… 有时您可以获得提示,甚至可以找到您想要的提示。我的建议是避免下降到二进制级别,让别人的代码为你处理这个问题。 |我将二进制表示视为时区 - 只需询问可以可靠处理它的黑匣子,不要试图过度思考它:youtube.com/watch?v=-5wpm-gesOY