1
我正在尋找一種方法在C#中獲得此過程的結果。準確地說,我試圖根據給定的格式從二進制字符串解壓數據(該方法應該返回一個數組)。有關更多信息,請參閱http://docs.python.org/2/library/struct.html。在Python中的Python解壓縮函數#
struct.unpack('!hh', data[2:6])
有沒有在C#中這樣做的方法?
我正在尋找一種方法在C#中獲得此過程的結果。準確地說,我試圖根據給定的格式從二進制字符串解壓數據(該方法應該返回一個數組)。有關更多信息,請參閱http://docs.python.org/2/library/struct.html。在Python中的Python解壓縮函數#
struct.unpack('!hh', data[2:6])
有沒有在C#中這樣做的方法?
我認爲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個字節加載到2個short
變量。
有一件事可以咬你BinaryReader:它有固定的排序。解壓函數可以讓你指定不同的字節順序,但.NET並不容易。如果你需要控制它,你必須求助於使用流,可能是Array.Reverse()和BitConverter。 – OwenP