2012-02-13 8 views
3

perl hex()pythonのアナログ?
私は次のPerlコードしている:私はそれがpythonのperl hex()analog

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

がそれに右であるのpythonに

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

$Hexlineている "6a48f82d8e828ce82b82 ..." 形式

を試してみてください?

EDIT:perlの場合hex()は10進値を返します。

+0

あなたがそれを実行したときに何が起こりますか? PythonのCLIを使用して、それはあなたの友人です。 – monkut

答えて

6

はい、16進文字列を整数に変換する場合は、int(hex_str, 16)を使用します。あなたのwriteメソッド呼び出しで

注:

  • あなたは改行文字を追加するために、2つの文字列を連結する必要はありませんが、あなたは直接の書式文字列に追加することができます。
  • 整数を出力するには%sの代わりに%dを使用してください。
  • 整数を文字列に変換するのに、実際にstrを呼び出す必要はありません。

したがって、書き込み呼び出しのように書くことができます。また

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

、あなたもformatをこの方法を使用することができます。

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

ありがとうございました!私が必要とするすべてのフォーマット。 –

+2

%-formattingで%dを使用することを強くお勧めする場合は、str.formatでも 'd'を使用するようにしてはいけませんか? :) –

+1

@ThomasWouters私は、例が対称ではないことに同意します。しかし、最初のケースでは、 '%s'(' int .__ str__'が呼び出されます)を使用して少し誤解を招くことがありますが、2番目のケースでは、特定の型を使用しないことは、 ( 'int .__ format__'が呼び出されます)。 – jcollado