Python 的 struct.pack(fmt, v1, v2, ...) 相当于什么?在 C#.NET 中?我在 C# 中定义了以下结构
[StructLayout(LayoutKind.Sequential, Pack=1)]
struct user {
public char id;
public int age;
};
并希望使用 struct.unpack('<ci',myStringedStruct)
在 Python 应用程序中解压它
我打算使用 BinaryWriter进入MemoryStream作为suggested by Jon Skeet .然而,BinaryWriter only write primitive types ,我有一个结构。
最佳答案
可以将字段一个接一个地写入BinaryWriter :
User user = ...
using (BinaryWriter writer = ...)
{
writer.Write((byte)user.id);
writer.Write(user.age);
}
- BinaryWriter使用平台的字节序,即 x86/x64 上的小字节序。
- “c – char – 长度为 1 – 1 字节的字符串”是一个 byte在 C# 中。 Write(byte)
- "i – int – integer – 4 bytes"是 int在 C# 中。 Write(Int32)
.NET Framework 中没有内置类似pack
/unpack
的功能。1
1。当您 p/调用 native 代码时,有 Interop Marshaling .但您不是在 p/调用 native 代码。
关于c# - Python 的 struct.pack(fmt, v1, v2, ...) 在 C# .NET 中的等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18861606/