将Python struct.pack转换为erlang
我尝试实现以下python代码,并在Erlang中获得相同的结果:将Python struct.pack转换为erlang,python,erlang,pack,Python,Erlang,Pack,我尝试实现以下python代码,并在Erlang中获得相同的结果: struct.pack('Q', long(20000001)) 有什么想法吗?在Erlang中,与pack/unpack最接近的等价物是使用 由于Q格式通过(un)pack映射到8字节无符号长,您可以通过以下方式获得类似的结果: 40> <<V:64>>. <<0,0,0,0,1,49,45,1>> 40>。 请注意,在Erlang中,默认的endian是big-en
struct.pack('Q', long(20000001))
有什么想法吗?在Erlang中,与
pack
/unpack
最接近的等价物是使用
由于Q
格式通过(un)pack映射到8字节无符号长
,您可以通过以下方式获得类似的结果:
40> <<V:64>>.
<<0,0,0,0,1,49,45,1>>
40>。
请注意,在Erlang中,默认的endian是big-endian。您可能希望更改(或明确提及):
41>。
42> . %% . %% = . %% big-endian(默认)到big-endian
45>B。
20000001
46> = . %% 大端到小端
47>S。
84777848354635776
48> = . %% 小端到小端
49>L。
20000001
请注意,在将Python与Erlang进行比较时,二进制值的标准输出乍一看可能会令人困惑:
Python Erlang
\x00 => <<0>>
\x01 => <<1>>
- => <<45>>
1 => <<49>> ! do not confuse the value 1 (0x01) and the character '1' !
Python-Erlang
\x00=>
\x01=>
- =>
1 => ! 不要混淆值1(0x01)和字符“1”!
因此,Python二进制字符串
\x01-1\x01\x00\x00\x00\x00
是在Erlang中编写的。使用
由于Q
格式通过(un)pack映射到8字节无符号长
,您可以通过以下方式获得类似的结果:
40> <<V:64>>.
<<0,0,0,0,1,49,45,1>>
40>。
请注意,在Erlang中,默认的endian是big-endian。您可能希望更改(或明确提及):
41>。
42> . %% . %% = . %% big-endian(默认)到big-endian
45>B。
20000001
46> = . %% 大端到小端
47>S。
84777848354635776
48> = . %% 小端到小端
49>L。
20000001
请注意,在将Python与Erlang进行比较时,二进制值的标准输出乍一看可能会令人困惑:
Python Erlang
\x00 => <<0>>
\x01 => <<1>>
- => <<45>>
1 => <<49>> ! do not confuse the value 1 (0x01) and the character '1' !
Python-Erlang
\x00=>
\x01=>
- =>
1 => ! 不要混淆值1(0x01)和字符“1”!
因此,Python二进制字符串
\x01-1\x01\x00\x00\x00\x00
是用Erlang编写的。感谢您的回复。我正在寻找包装的替换品。struct.pack的结果如下所示:struct.pack('Q',long(2000001))'\x01-1\x01\x00\x00\x00\x00'@Gadi???据我所知,
正在产生与Python代码片段完全相同的结果。我对答案进行了编辑,使其更加清晰。谢谢!非常感谢你的回复。我正在寻找包装的替换品。struct.pack的结果如下所示:struct.pack('Q',long(2000001))'\x01-1\x01\x00\x00\x00\x00'@Gadi???据我所知,
正在产生与Python代码片段完全相同的结果。我对答案进行了编辑,使其更加清晰。谢谢!他很有帮助