C#中Python的解包函数
Posted
技术标签:
【中文标题】C#中Python的解包函数【英文标题】:Python's unpack function in C# 【发布时间】:2013-12-20 15:08:18 【问题描述】:我正在寻找一种在 C# 中获取此过程结果的方法。准确地说,我试图根据给定的格式从二进制字符串中解压缩数据(该方法应该返回一个数组)。更多信息请参考http://docs.python.org/2/library/struct.html。
struct.unpack('!hh', data[2:6])
有没有办法在 C# 中做到这一点?
【问题讨论】:
【参考方案1】:我认为BinaryReader 是你想要的。
类似这样的东西是等价的(假设data
是一个字节数组):
using (var stream = new MemoryStream(data))
using (var reader = new BinaryReader(stream))
stream.Seek(2, SeekOrigin.Begin);
var value1 = reader.ReadInt16();
var value2 = reader.ReadInt16();
这应该跳过前 2 个字节,然后将接下来的 4 个字节加载到两个 short
变量中。
【讨论】:
BinaryReader 可能会咬你一口:它有固定的字节序。解包函数允许您指定不同的字节顺序,但 .NET 并不容易。如果你需要控制它,你必须使用流,可能是 Array.Reverse() 和 BitConverter。以上是关于C#中Python的解包函数的主要内容,如果未能解决你的问题,请参考以下文章