c# - 如何使用 BinaryReader 正确读取 16 字节无符号整数

标签 c# .net vb.net binaryreader

我需要在 .NET 中解析二进制流以转换 16 字节无符号整数。我想使用 BinaryReader.ReadUIntXX() 函数,但没有可用的 BinaryReader.ReadUInt128() 函数。我假设我将不得不使用 ReadByte 函数滚动我自己的函数并构建一个数组,但我不知道这是否是最有效的方法? 谢谢!

最佳答案

我很乐意将此归功于此,但只要快速搜索一下网络,中提琴:

http://msdn.microsoft.com/en-us/library/bb384066.aspx

这是代码示例(位于同一页面上)

byte[] bytes = { 0, 0, 0, 25 };

// If the system architecture is little-endian (that is, little end first),
// reverse the byte array.
if (BitConverter.IsLittleEndian)
    Array.Reverse(bytes);

int i = BitConverter.ToInt32(bytes, 0);
Console.WriteLine("int: {0}", i);
// Output: int: 25

大多数开发人员唯一不知道的是大端和小端之间的区别。就像生活中的大多数事情一样,人类根本无法就非常简单的事情达成一致(左手和右手汽车也是一个很好的例子)。当位(记住 1 和 0 以及二进制数学)被布置时,位的顺序将决定字段的值。一个字节是八位..然后是有符号和无符号..但让我们坚持顺序。数字 1(一)可以用两种方式之一表示,10000000 或 00000001(详细解释请参阅注释中的说明)- 正如代码中的注释所暗示的那样,big-endian 是前面的那个,litte -endian 是零。 (参见 http://en.wikipedia.org/wiki/Endianness - 对不起新用户,他们不会让我超链接不止一次....)为什么我们不能都同意???

我多年前在处理嵌入式系统时吸取了这个教训……还记得链接吗? :) 我是不是暴露年龄了??

关于c# - 如何使用 BinaryReader 正确读取 16 字节无符号整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007055/

相关文章:

vb.net - DevExpress 加速键未显示在 xtraBars 中

c# - sqlite查询慢,如何优化(使用linq to entities)

c# - 如何使用 Linq 从 List<Object> 中获取第一个对象

c# - CNG 从文件导入 ECC 公钥/私钥

c# - 如何在单个 Razor View 中编辑多个模型

c# - 允许使用Task.Run异步运行任何方法的.Net Framework中的* Async方法的目的是什么?

android - 如何在 Android 中使用 WCF .SVC

c# - 在 .NET 中,为什么常量在编译时而不是在 JIT 时求值?

.net - 如何从 VB.Net 中的字典(字符串,对象)中重铸对象

vb.net - PDF页面计数器