Python to C#:如何格式化套接字数据?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python to C#:如何格式化套接字数据?相关的知识,希望对你有一定的参考价值。
我正在将一个python通信库转换为C#,并且在通过tcp发送之前无法解释字符串的格式化方式。
代码的相关部分如下:
struct.pack(
'!HHBH'+str(var_name_len)+'s',
self.msg_id,
req_len,
flag,
var_name_len,
self.varname
)
然后它发送:sendall()
我查看了Python文档(https://docs.python.org/2/library/struct.html),但我仍然在第一行写一个空白:'!HHBH'+ str(var_name_len)+'s',我知道这是设置格式的地方,但它是什么格式化为超出我。
我正在翻译的python代码可以在以下链接中找到:https://github.com/linuxsand/py_openshowvar/blob/master/py_openshowvar.py
任何python和C#vigilantes可以帮我建立这座桥吗?
编辑:根据jas的回答,我编写了以下c#结构:
public struct messageFormat
{
ushort messageId;
ushort reqLength;
char functionType;
ushort varLengthHex;
string varname;
...
一旦我填充它,我将需要通过TCP发送它。我有一个打开的套接字,但需要转换为byte []我假设我可以使用socket.send(byte [])?
谢谢
格式化的是格式字符串后面的五个参数。每个参数在格式字符串中都有对应的元素。
为了便于解释,我们假设var_name_len
的值为12(可能是因为var_name
是一个长度为12的字符串,在这个假设的情况下)。
所以格式字符串将是
!HHBH12s
根据文档打破这一点:
! Big-ending byte ordering will be used
H self.msg_id will be packed as a two-byte unsigned short
H req_len will be packed as above
B flag will be packed as a one-byte unsigned char
H var_name_len will be packed as a two-byte unsigned short
12s self.varname will be packed as a 12-byte string
以上是关于Python to C#:如何格式化套接字数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 df.to_csv 为多索引数据帧 python3 格式化 csv 文件
如何序列化apache箭头c ++表,通过套接字传输,并在python端反序列化