【问题标题】:Python's unpack function in C#C#中Python的解包函数
【发布时间】:2013-12-20 15:08:18
【问题描述】:

我正在寻找一种在 C# 中获取此过程结果的方法。准确地说,我试图根据给定的格式从二进制字符串中解压缩数据(该方法应该返回一个数组)。更多信息请参考http://docs.python.org/2/library/struct.html

struct.unpack('!hh', data[2:6])

有没有办法在 C# 中做到这一点?

【问题讨论】:

    标签: c# python arrays string unpack


    【解决方案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。
    猜你喜欢
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 2020-09-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 2011-12-22
    相关资源
    最近更新 更多