binasciiでバイナリコードを16進ダンプする

pyapnsのコードを読んでてでてきたのでメモ

pyapnsはapple push notification serviceとのやりとりを行うライブラリです
apnsサーバーとはバイナリで値をやりとりしますが、ログに出力するのにbinasciiを使って16進ダンプしてます。

たとえばfeedbackサービスで受信した値をログ出力する処理はこんな感じです

  def rawDataReceived(self, data):
    log.msg('feedbackHandler rawDataReceived %s' % binascii.hexlify(data))
    self.io.write(data)

binasciiモジュールのhexlify関数を使います。
出力される文字列は以下のような感じになります。(tokenの部分は適当に変えてます)

50b45f090020abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

バイナリに戻すにはbinascii.unhexlifyを使います。

binary_tuples = binascii.unhexlify("50b45f090020abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890")