2013年3月18日月曜日

[Python]バイナリ, 文字列, 数値変換

# -*- coding: utf-8 -*-
import struct
import binascii

# 数値 (0x64) -> 文字列 '0x64'
num = 100
print "10 進数数値 : %d" % num
print "16 進数数値 : %02x" % num
numstr = str(num)
print "10 進数文字列: %s" % numstr
numstr16 = str("%02x" % num)
print "16 進数文字列: %s" % numstr16

# 10 進数文字列 '100' -> 数値 (0x64)
print "-------------------"
numstr = "100"
print "10 進数文字列: %s" % numstr
num = int(numstr)
print "10 進数数値 : %d" % num

# 16 進数文字列 '64' -> 数値 (0x64)
print "-------------------"
numstr16 = "64"
print "16 進数文字列: %s" % numstr16
num = int(numstr16, 16)
print "16 進数数値 : %02x" % num

# バイナリ (00000064) -> 数値 (0x64)
print "-------------------"
bin = "\x00\x00\x00\x64"
print "Binary : %s" % binascii.b2a_hex(bin)
d = struct.unpack('!L', bin)
print "16 進数数値 : %08x" % d
print "10 進数数値 : %d" % d

# 数値 (0x64) -> バイナリ (00000064)
print "-------------------"
d = 0x64
print "16 進数数値 : %08x" % d
bin = struct.pack('!L', d)
print "Binary : %s" % binascii.b2a_hex(bin)

# 16 進数文字列 '64' -> バイナリ (00000064)
print "-------------------"
numstr16 = "64"
print "16 進数文字列: %s" % numstr16
d = int(numstr16, 16)
bin = struct.pack('!L', d)
print "Binary : %s" % binascii.b2a_hex(bin)

実行結果
$ python number.py
10 進数数値 : 100
16 進数数値 : 64
10 進数文字列: 100
16 進数文字列: 64
-------------------
10 進数文字列: 100
10 進数数値 : 100
-------------------
16 進数文字列: 64
16 進数数値 : 64
-------------------
Binary : 00000064
16 進数数値 : 00000064
10 進数数値 : 100
-------------------
16 進数数値 : 00000064
Binary : 00000064
-------------------
16 進数文字列: 64
Binary : 00000064

1 件のコメント:

  1. 確実の動くもので、良い参考になりました。
    ありがとうございました!!!

    Chen

    返信削除