pythonでバイナリデータを2進数にした後、いろいろ操作する方法をまとめてみた。 いろいろ操作した後にバイナリデータや整数に変換する方針にしている。正しいのかな?
import sys def main(): binary_data = b'\x08' # binary_data = b'\x48\x65\x6c\x6c\x6f' data = int.from_bytes(binary_data, sys.byteorder) binary_num = to_binary_number(data,10) binary_num = bit_slice(binary_num,4,2) print (binary_num) binary_num += create_0(5) print (binary_num) def to_binary_number(data,bit_width): binary_number = format(data,"0"+str(bit_width)+"b") return binary_number def create_0(num): return str("0"*int(num)) def bit_slice(binary_num,msb,lsb): data_len = len(binary_num) if data_len < msb+1: print ("[ ERROR ] msb is bigger than binary_num width") return -1 if msb < lsb: print ("[ ERROR ] msb is less than lsb") return -1 first_pos = data_len - msb - 1 last_pos = data_len - lsb - 1 return binary_num[first_pos:last_pos+1] if __name__ == "__main__": main()