Pythonでホストバイトオーダとネットワークバイトオーダ間の変換をする

低レベルネットワークのアプリケーションを書くときに、2つのマシン間での低レベルデータ伝送をすることがある。
このときデータを、ホストの形式からネットワーク形式へ変換する必要がある。

コードは以下の通り:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import socket


def convert_integer(data):
    """
    バイトオーダを変換する
    """
    print "Original: %s" % data
    # 32ビット
    print "Long  host byte order: %s, Network byte order: %s" % (socket.ntohl(data), socket.htonl(data))
    # 16ビット
    print "Short  host byte order: %s, Network byte order: %s" % (socket.ntohs(data), socket.htons(data))


if __name__ == '__main__':
    convert_integer(data=12345)

ntohl()は、32bitの正の整数のバイトオーダをネットワークバイトオーダからホストバイトオーダに変換する。
htonl()は、32ビットの正の整数のバイトオーダを、ホストバイトオーダからネットワークバイトオーダに変換する。
ntohs()は、16ビットの正の整数のバイトオーダを、ネットワークバイトオーダからホストバイトオーダに変換する。
htons()は、16ビットの正の整数のバイトオーダを、ホストバイトオーダからネットワークバイトオーダに変換する。