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ビットの正の整数のバイトオーダを、ホストバイトオーダからネットワークバイトオーダに変換する。