files data convertir bytes binascii binario python binary hex

data - Conversión de Python de cadena binaria a hexadecimal



convertir binario a ascii python (11)

Convertir Binary en hexadecimal sin ignorar los ceros iniciales:

Podría usar la función incorporada format () de esta manera:

"{0:0>4X}".format(int("0000010010001101", 2))

¿Cómo puedo realizar una conversión de una cadena binaria al valor hexadecimal correspondiente en Python?

Tengo 0000 0100 1000 1101 y quiero obtener 048D Estoy usando Python 2.6.


En python3 usando la función hexlify :

import binascii def bin2hex(str1): bytes_str = bytes(str1, ''utf-8'') return binascii.hexlify(bytes_str) a="abc123" c=bin2hex(a) c

Te devolveré:

b''616263313233''

y puedes obtener la cadena como:

c.decode(''utf-8'')

da:

''616263313233''


Por la razón que sea que haya tenido problemas con algunas de estas respuestas, escribí un par de funciones de ayuda para mí, así que si tiene problemas como los que tuve, inténtelo.

def bin_string_to_bin_value(input): highest_order = len(input) - 1 result = 0 for bit in input: result = result + int(bit) * pow(2,highest_order) highest_order = highest_order - 1 return bin(result) def hex_string_to_bin_string(input): lookup = {"0" : "0000", "1" : "0001", "2" : "0010", "3" : "0011", "4" : "0100", "5" : "0101", "6" : "0110", "7" : "0111", "8" : "1000", "9" : "1001", "A" : "1010", "B" : "1011", "C" : "1100", "D" : "1101", "E" : "1110", "F" : "1111"} result = "" for byte in input: result = result + lookup[byte] return result def hex_string_to_hex_value(input): bin_string = hex_string_to_bin_string(input) bin_value = bin_string_to_bin_value(bin_string) return hex(int(bin_value, 2))

Parece que funcionan bien.

print hex_string_to_hex_value("FF") print hex_string_to_hex_value("01234567") print bin_string_to_bin_value("11010001101011")

resultados en:

0xff 0x1234567 0b11010001101011


Suponiendo que estén agrupados por 4 y separados por espacios en blanco. Esto conserva el 0 principal.

b = ''0000 0100 1000 1101'' h = ''''.join(hex(int(a, 2))[2:] for a in b.split())


Usa el módulo Binascii de Python.

import binascii binFile = open(''somebinaryfile.exe'',''rb'') binaryData = binFile.read(8) print binascii.hexlify(binaryData)


Usando sin concatenaciones desordenadas y relleno:

''{:0{width}x}''.format(int(temp,2)), width=4)

Dará una representación hexagonal con relleno conservado.


int da la base 2 y luego el hex :

>>> int(''010110'', 2) 22 >>> hex(int(''010110'', 2)) ''0x16'' >>> >>> hex(int(''0000010010001101'', 2)) ''0x48d''

El documento de int :

int(x[, base]) -> integer Convert a string or number to an integer, if possible. A floating

el argumento del punto se truncará hacia cero (¡esto no incluye una representación de cadena de un número de punto flotante!) Al convertir una cadena, use la base opcional. Es un error proporcionar una base al convertir una no cadena. Si la base es cero, la base adecuada se adivina en función del contenido de la cadena. Si el argumento está fuera del rango de enteros, se devolverá un objeto largo.

El documento de hex :

hex(number) -> string Return the hexadecimal representation of an integer or long

entero.


x = int(input("press 1 for dec to oct,bin,hex /n press 2 for bin to dec,hex,oct /n press 3 for oct to bin,hex,dec /n press 4 for hex to bin,dec,oct /n")) if x is 1: decimal =int(input(''Enter the decimal number: '')) print(bin(decimal),"in binary.") print(oct(decimal),"in octal.") print(hex(decimal),"in hexadecimal.") if x is 2: binary = input("Enter number in Binary Format: "); decimal = int(binary, 2); print(binary,"in Decimal =",decimal); print(binary,"in Hexadecimal =",hex(decimal)); print(binary,"in octal =",oct(decimal)); if x is 3: octal = input("Enter number in Octal Format: "); decimal = int(octal, 8); print(octal,"in Decimal =",decimal); print(octal,"in Hexadecimal =",hex(decimal)); print(octal,"in Binary =",bin(decimal)); if x is 4: hex = input("Enter number in hexa-decimal Format: "); decimal = int(hex, 16); print(hex,"in Decimal =",decimal); print(hex,"in octal =",oct(decimal)); print(hex,"in Binary =",bin(decimal));


bstr = ''0000 0100 1000 1101''.replace('' '', '''') hstr = ''%0*X'' % ((len(bstr) + 3) // 4, int(bstr, 2))


format(int(bits, 2), ''0'' + str(len(bits) / 4) + ''x'')


>>> import string >>> s="0000 0100 1000 1101" >>> ''''.join([ "%x"%string.atoi(bin,2) for bin in s.split() ] ) ''048d'' >>>

o

>>> s="0000 0100 1000 1101" >>> hex(string.atoi(s.replace(" ",""),2)) ''0x48d''