2016-01-22 1 views
-2

У меня есть строка text="0000001011001100" Я хочу, чтобы преобразовать эту строку в 2 байта массива что-то вроде этого (Ь «\ x00 \ x02»).Convert Строка в 2Bytearray (U32) - питон

byte_array=(socket.htons(text)).to_bytes(2,sys.byteorder) 

но это не работает и дает ошибку, INT необходимый Я преобразовал текст Int, но тогда вся строка изменяет

мне нужна помощь по этому

+0

Что вы имеете в виду массив * 2 байта *? – Kasramvd

+0

@ Kasramvd 2 байт массива означает U32 Извините, если я использовал неправильный термин, на самом деле я новичок в pyhton – user5661083

ответ

1

Вы можете преобразовать текст в целое, а затем вы можете использовать модуль struct

import struct 

text = "0000001011001100" 
number = int(text, 2) # 716 

result = struct.pack("h", number) 

b'\xcc\x02' 

# or with > to change bytes order 

result = struct.pack(">h", number) 

b'\x02\xcc' 

см: https://docs.python.org/3/library/struct.html

0

Вы должны преобразовать двоичное представление в Int с базой 2

text="0000001011001100" 
num =int(text,2) #interprets string in base 2 
result = chr(num) #is this what you want? 

, если вы используете питона 3.x и хотите, чтобы преобразовать текст в bytes объект из строки любой длины путем разделения на каждый из 8 символов:

bytes(int(text[i:i+8],2) for i in range(0,len(text),8)) 

но для примера это дает b'\x02\xcc' поэтому возможно, что вы хотите что-то другое