Python 中的 perl hex() 模拟

perl hex() analog in python

提问人:Sir D 提问时间:2/13/2012 最后编辑:Sir D 更新时间:2/13/2012 访问量:372

问:

Python中的perl hex()模拟如何?
我有下一个perl代码:

my $Lon = substr($Hexline,16,8);
say $output_f "Lon: " . hex($Lon) . "";

哪里有“6a48f82d8e828ce82b82...”格式$Hexline

我在python上尝试

Lon = int(Hexline[16:24], 16)
f.write('lon = %s' % str(Lon)+'\n')

这是对的吗?

编辑:在 perl 的情况下,hex() 给了我一个十进制值。

python perl 十六进制

评论

0赞 monkut 2/13/2012
当你运行它时会发生什么?使用 python CLI,它是您的朋友。

答:

7赞 jcollado 2/13/2012 #1

是的,要将十六进制字符串转换为整数,请使用 。int(hex_str, 16)

请注意,在方法调用中:write

  • 您无需连接两个字符串即可添加新行字符,您可以直接将其添加到格式化字符串中。
  • 要打印整数,您应该使用 代替 。%d%s
  • 您实际上不需要调用即可将整数转换为字符串。str

因此,写入调用可以写成:

f.write('lon = %d\n' % Lon)

或者,您也可以通过以下方式使用格式

f.write('lon = {0}\n'.format(Lon))

评论

0赞 Sir D 2/13/2012
谢谢!格式这就是我所需要的。
2赞 Thomas Wouters 2/13/2012
如果你坚持在%格式中使用%d,你不应该坚持在str.format中使用'd'吗?:)
1赞 jcollado 2/13/2012
@ThomasWouters 我同意这些例子不是对称的。但是,在第一种情况下,我发现使用(称为)有点误导,而在第二种情况下,我发现不使用特定类型并不违反格式的使用方式(称为)。%sint.__str__int.__format__