Целочисленная (представляющая последовательность бит) реинтерпретация в виде массива символов в Python

Я написал некоторый C-код, который я хотел бы портировать на python, так как я считаю, что python – лучший «концептуальный» язык.

В моем C-коде я использую переопределение языка для достижения своих целей, например:

sizeof(int) is 4 byte sizeof(char) is 1 byte char c[4]={0x01,0x30,0x00,0x80}; int* i=(int*)c; *i has the value 0x80003001 

аналогично, если у меня есть:

 int* j = (int*)malloc(sizeof(int)); char* c = (char*)j; *j = 0x78FF00AA; c is now {0xAA, 0x00, 0xFF, 0x78} 

Я хотел бы сделать подобное в python, я понимаю, что я могу использовать бит-операции для выполнения этого:

 chararray=[] num=1234567890 size=8 while len(chararray) < size: char = chr( (num & 255 ) ) num = num >> 8 chararray.append(char) 

Однако я надеялся, что будет более быстрый способ добиться этого.

У python есть что-то похожее на объединение C?

Вы можете использовать модуль struct :

 import struct # Pack a Python long as if it was a C unsigned integer, little endian bytes = struct.pack("<I", 0x78FF00AA) print [hex(ord(byte)) for byte in bytes] ['0xaa', '0x0', '0xff', '0x78'] 

Прочтите страницу документации, чтобы узнать о типах данных, и обратите внимание на достоверность.