10進数を与えて、16進数を得る方法を考えます。
例として「227」というintを使って、16進数「e3」が欲しいなというのが下記です。
hex関数を使う
普通に考えたらこうなんですが
hex(227)
'0xe3'
0x
が欲しくないです。
文字列的に置換してもいいんですが…
hex(227).replace('0x','')
'e3'
なんだかすっきりしません
文字列フォーマットを使う
こういうのもあります
'{:x}'.format(227)
'e3'
replaceよりは多少。。。
でもなんか、もう少しスマートにいかないものでしょうかー
参考
【追記】フォーマット済み文字列リテラル
コメントにて教えていただきました。
3.6以降であれば フォーマット済み文字列リテラル というのを使ってこのように書くことができるそうです。
f'{227:02x}'
%による文字列フォーマットのより抽象度の高いやつという感じですね。
惜しむらくは、多くのDCCツールがまだ3系には対応していないことです。。。
待て2019年(でしたっけ
逆
int('e3',16)
227
int('0xe3',16)
227
227からe3を得るには一手間かかりますが、e3からは一発で227が得られるんですよねー