Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python struct.pack转换为erlang_Python_Erlang_Pack - Fatal编程技术网

将Python struct.pack转换为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

我尝试实现以下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-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代码片段完全相同的结果。我对答案进行了编辑,使其更加清晰。谢谢!他很有帮助