我正在解析二进制文件格式.它以一种自然适合c#的uint类型的方式使用四个字节对整数进行编码.
实现此功能的最多C#/惯用方法是什么:
uint ReadUint(byte[] buffer);
Run Code Online (Sandbox Code Playgroud)
假设缓冲区包含4个元素.完整的答案可能会考虑文件中由小/大端假设引起的一些常见字节排序,并记录它选择解析的一个或多个.
最基本的(但有点危险的re endianness)是:
return BitConverter.ToUInt32(buffer, 0);
Run Code Online (Sandbox Code Playgroud)
除了比特移位很好(根据你自己的回复) - 或者你可以在处理翻译的MiscUtil中使用Jon的EndianBitConverter.
(编辑)
我在protobuf-net中使用的little-endian位移版本与你的版本非常相似 - 我只是按升序读取它们并使用按位(不是数字)加法:
return ((uint)buffer[0])
| (((uint)buffer[1]) << 8)
| (((uint)buffer[2]) << 16)
| (((uint)buffer[3]) << 24);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1943 次 |
| 最近记录: |