引数に16進数をとる関数を呼び出すスクリプトがあります。引数には0xプレフィックスが必要です。データソースはデータベーステーブルであり、文字列として格納されるため、「0x77」が返されます。データベースから文字列を取得し、0xプレフィクスを持つ16進形式の引数として使用する方法を探しています。
これは動作します:
addr = 0x77
value = class.function(addr)
データベースエントリは文字列である必要があります。他のほとんどのレコードではこの列に16進値がないため、値を変更して簡単にするため、「0x77」の代わりに「119」にすることができます。
_class.function
_には、10進数または16進数literalで表現できるintegerが必要です。呼び出しは完全に同等です:
_class.function(0x77)
class.function(119) # 0x77 == 119
_
print(0x77)
でも_119
_と表示されます(10進数がデフォルトの表現であるため)。
したがって、文字列表現をintegerに変換することについて話す必要があります。文字列は、 '0x77'のような16進表現にすることができ、ベースパラメータで解析します。
_ >>> int('0x77', 16)
119
_
または10進数の場合は、int('119')
として解析します。
それでも、整数を扱うときは常に整数を保存する方が適切です。
編集:@gnibblerが示唆したように、両方の形式を処理するint(x, 0)
として解析できます。
>>> hex(119)
'0x77'
#or:
>>> hex(int("119"))
'0x77'
これはあなたのために働くはずです。
文字の16進表現も取得できます。
>>> hex(ord("a"))
'0x61'
データベースから文字列を読み取り、それを整数に変換したいと言っていると思います。文字列に0xプレフィックスがある場合、次のように変換できます。
>>> print int("0x77", 16)
119
そうでない場合:
>>> print int("119")
119