LINUX.ORG.RU

[python] Запись строки

 


0

1

Нужно в бинарный файл записать кусок размером в 512 байт, в начале идёт число, а за ним строка. Это должно быть записано в big-endian и каждый символ строки должен представляться двумя байтами. Примерно так:

00 29 00 5C  00 4D 00 75  00 73 00 69  00 63 00 5C  .).\.M.u.s.i.c.\

Пробую это проделать через struct:

struct.pack('>h510s', number, string)

С использованием string.encode('hex') или binascii.hexlify(string) я получаю

\x00\x295c4d757369635c\x00\x00\x00\x00\x00

В общем, необходимо получить:

\x00\x29\x00\x5c\x00\x4d\x00\x75\x00\x73\x00\x69\x00\x63\x00\x5c\x00\x00\x00\x00\x00
Как лучше из строки получить такую последовательность двухбайтовых символов?

$ python -c "open('111','w+').write(')\\\Music\\\'.encode('utf-16-be'))"
$ hexdump -C 111
00000000  00 29 00 5c 00 4d 00 75  00 73 00 69 00 63 00 5c  |.).\.M.u.s.i.c.\|
00000010
uzbl
()

> Как лучше из строки получить такую последовательность двухбайтовых символов?

Так, как это укладывается в требования/ограничения/етц

anonymous
()
Ответ на: комментарий от uzbl

Вот спасибо. Пробовал просто encode('utf16') и не обратил внимания, что есть utf-16-be

stormblastt ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.