преобразование Unicode-строки в Python - PullRequest
4 голосов
/ 17 декабря 2008

Мне нужно преобразовать строки Unicode в Python в другие типы, такие как беззнаковые и знаковые целые 8-битные, беззнаковые и знаковые целые 16-битные, беззнаковые и знаковые целые 32-битные, беззнаковые и знаковые целые 64-битные, двойные, с плавающей точкой, строки без знака и со знаком 8 бит, без знака и со знаком 16 бит, без знака и со знаком 32 бит, без знака и со знаком 64 бит.

Мне нужна помощь от вас.

1 Ответ

11 голосов
/ 17 декабря 2008

используйте int() для преобразования строки в целое число. Python не имеет различных целых чисел фиксированной ширины, поэтому вы просто получите один тип вещей.

Затем используйте struct, чтобы упаковать целое число в фиксированную ширину:

res = struct.pack("=B",i) ## uint8_t
res = struct.pack("=b",i) ## int8_t

res = struct.pack("=H",i) ## uint16_t
res = struct.pack("=h",i) ## int16_t

res = struct.pack("=I",i) ## uint32_t
res = struct.pack("=i",i) ## int32_t

res = struct.pack("=Q",i) ## uint64_t
res = struct.pack("=q",i) ## int64_t

res = struct.pack("=f",i) ## float
res = struct.pack("=d",i) ## double

struct создает байтовую строку, содержащую число в двоичном виде.

EDIT: Из комментариев звучит так, будто вы просто хотите преобразовать строку (десятичных цифр) в целое число. Просто используйте int() для этого, однако вы не получите всю сложную семантику переполнения / недостаточного заполнения указанных типов. Вы не можете воспроизвести это в Python, по крайней мере, без написания большого количества кода.

Я думаю, что если вам нужна дополнительная помощь, вам нужно быть более точным в том, чего вы хотите достичь.

...