2012-02-13 56 views
3

perl十六进制()模拟python如何?
我旁边的Perl代码:perl十六进制()模拟python

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

其中$Hexline有 “6a48f82d8e828ce82b82 ......” 格式

我试试蟒蛇

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

是不是?

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

+0

什么,当你运行出现这种情况?使用Python CLI,它是你的朋友。 – monkut 2012-02-13 08:23:26

回答

6

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

注意,在你的write方法调用:

  • 你并不需要连接两个字符串添加新的行字符,你可以直接将其添加到格式化字符串。
  • 要打印整数,您应该使用%d而不是%s
  • 您并不需要调用str将整数转换为字符串。

因此,写调用可以写成:

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

或者,你也可以使用format这样:

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

谢谢!格式就是我需要的。 – 2012-02-13 08:35:52

+2

如果你坚持在%-formatting中使用%d,你不应该坚持在str.format中使用'd'吗? :) – 2012-02-13 10:56:56

+1

@ThomasWouters我同意这些例子是不对称的。然而,在第一种情况下,我发现使用'%s'有点误导性(调用'int .__ str__'),而在第二种情况下,我发现不使用特定类型并不违背应该使用的格式(调用'int .__ format__')。 – jcollado 2012-02-13 12:00:51