C# Python';C语言中的s解包函数#
我正在寻找一种在C#中获得此过程结果的方法。确切地说,我试图根据给定的格式(该方法应返回一个数组)从二进制字符串中解包数据。有关更多信息,请参阅C# Python';C语言中的s解包函数#,c#,python,arrays,string,unpack,C#,Python,Arrays,String,Unpack,我正在寻找一种在C#中获得此过程结果的方法。确切地说,我试图根据给定的格式(该方法应返回一个数组)从二进制字符串中解包数据。有关更多信息,请参阅 struct.unpack('!hh', data[2:6]) 在C#中有这样做的方法吗?我想这就是你想要的 类似这样的内容是等效的(假设数据是字节数组): 这应该跳过前2个字节,然后将接下来的4个字节加载到两个short变量中。我想这就是您想要的 类似这样的内容是等效的(假设数据是字节数组): 这应该跳过前2个字节,然后将接下来的4个字节加载到两个
struct.unpack('!hh', data[2:6])
在C#中有这样做的方法吗?我想这就是你想要的
类似这样的内容是等效的(假设数据是字节数组):
这应该跳过前2个字节,然后将接下来的4个字节加载到两个short
变量中。我想这就是您想要的
类似这样的内容是等效的(假设数据是字节数组):
这应该跳过前2个字节,然后将接下来的4个字节加载到两个short
变量中。使用BinaryReader时,有一件事会让你头疼:它有固定的结尾。解包函数允许您指定不同的endianness,但是.NET并不能让它变得简单。如果您需要控制它,您必须求助于使用流,可能是Array.Reverse()和BitConverter。解包函数允许您指定不同的endianness,但是.NET并不能让它变得简单。如果您需要控制这一点,您必须求助于使用流,可能是Array.Reverse()和位转换器。
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();
}
}