2016/11/02

[py]エスケープシーケンスで16進数

pythonで16進数を扱うのに疲れてきた・・・。
前回classを作ってはみたものの、お仕事で作っているライブラリはもう終わりかけなのでわざわざ書き直す気になれないけれども、使っているとやっぱりミスをしばしば。。。

 

さて、今まで16進数をbytearrayに突っ込むのに、文字列で16進数を書いてdecode('hex')する、という技しか知らなかったのですが、エスケープシーケンスが使えることをようやく知りました。
今さらかよ、私・・・。

'1234'.decode('hex') ==> '\x12\x34'

うん、固定値の場合はこっちの方がわかりやすい。
いやぁ、いままで1byteのときも「'01'.decode('hex')」などと書いていて、げんなりしていたのだ。

まだ応用が利かないので、じわじわやっていくしかないですな。

 

 

この辺の書き方がC言語と同じなのは、興味深いところだ。
ただ、Cだとお尻に\0が付いてしまうので、{ 0x12, 0x34 }と書く方を私は使う。

使うのだけど、プロトコル中に埋め込む文字列を定義するときは、{ 'h', 'e', 'l', 'l', 'o' }などと書きたくないので、目をつぶって"hello"と書いて、sizeof()して1引いて使っている。

ろ、ROMに余裕が無いときは、ちゃんとやってますから!

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。