Python的等价物是什么;C#NET中的结构包(fmt、v1、v2,…)?
在C#.NET中,Python的等价物是什么?我在C中定义了以下结构#Python的等价物是什么;C#NET中的结构包(fmt、v1、v2,…)?,c#,python,c,struct,pack,C#,Python,C,Struct,Pack,在C#.NET中,Python的等价物是什么?我在C中定义了以下结构# 并希望在Python应用程序中使用struct.unpack(“您可以将字段逐个写入到: 使用平台的端号,即x86/x64上的小端号 “c–char–长度为1–1字节的字符串”是c#中的一个字母 “i–int–integer–4字节”是C#中的一个字母 .NET Framework中没有内置类似于打包/解包的功能。1 1.当您在p/调用本机代码时,有。但您不是在p/调用本机代码。您可以将字段一个接一个地写入: 使用平台
并希望在Python应用程序中使用
struct.unpack(“您可以将字段逐个写入到:
- 使用平台的端号,即x86/x64上的小端号
- “c–char–长度为1–1字节的字符串”是c#中的一个字母
- “i–int–integer–4字节”是C#中的一个字母
.NET Framework中没有内置类似于打包
/解包的功能。1
1.当您在p/调用本机代码时,有。但您不是在p/调用本机代码。您可以将字段一个接一个地写入:
- 使用平台的端号,即x86/x64上的小端号
- “c–char–长度为1–1字节的字符串”是c#中的一个字母
- “i–int–integer–4字节”是C#中的一个字母
.NET Framework中没有内置类似于打包
/解包的功能。1
1.当您在p/调用本机代码时,有。但您不是在p/调用本机代码。您还可以使用BinaryFormatter类来序列化对象的整个层次结构,或者只是一个简单的结构。您可能需要手动(逐字节)进行序列化或者使用非二进制格式,例如XML,使其独立于平台和语言
看
编辑:我没有注意到以后使用Python解包的请求。这不太可能与Python的解包函数一起工作。一般来说,我会犹豫是否使用库调用以二进制格式编写数据,以便在使用不同库编写的不同应用程序中使用。不保证一致性,并且规范可能会在未来。您最好使用独立于语言的标准。您也可以使用BinaryFormatter类序列化整个对象层次结构,或者只序列化一个简单的结构。您可能需要手动(逐字节)或使用非二进制格式,例如XML,使其独立于平台和语言
看
编辑:我没有注意到以后使用Python解包的请求。这不太可能与Python的解包函数一起工作。一般来说,我会犹豫是否使用库调用以二进制格式编写数据,以便在使用不同库编写的不同应用程序中使用。不保证一致性,并且规范可能会在未来。您最好使用独立于语言的标准。BinaryFormatter肯定会将对象序列化为字节,但不会序列化为易于在Python中反序列化的格式。哦,我应该仔细阅读。我没有注意到他想在Python中解包。BinaryFormatter肯定会将对象序列化为字节,但不会一种很容易在Python中反序列化的格式。哦,我应该仔细阅读。我没有注意到他想用Python解包。经过测试,我能够成功地使用Python的解包(格式、数据)解包我的C#struct。所以我使用了BinaryWriter
,MemoryStream
和MemoryStream.ToArray()
。经过测试,我能够成功地使用Python的解包(格式、数据)来解包我的C#struct。因此我使用了BinaryWriter
、MemoryStream
和MemoryStream.ToArray()
。
[StructLayout(LayoutKind.Sequential, Pack=1)]
struct user {
public char id;
public int age;
};
User user = ...
using (BinaryWriter writer = ...)
{
writer.Write((byte)user.id);
writer.Write(user.age);
}