New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Semana 11, ejercicio propuesto 1.1 #286
Comments
Hola, no sé a qué te refieres con convertir los bytes a enteros como una lista, lo único que se te pide en ese ejercicio es obtener los chunks de 8 bytes, eliminar todos los valores que sean máximos del chunk (puedes intentarlo con un while) y reconstruir el archivo agregándolos a un bytearray, tal como se había visto en los contenidos. Recuerda que puedes utilizar los métodos de listas o strings con los bytearrays también (ver su máximo, extenderlas, obtener su índice, etc.) Espero que te haya servido, saludos! |
Es que cuando trato de leer los bytes, no me aparece ningún número, me sale solo hexaecimales. Me printea algo como lo siguiente el .read()
|
Hola, si te interesa ver esos valores como una lista de números, los cuales es opcional, prueba a usar print en el for para obtener los chunks de esta manera: print([byte for byte in chunk]) Con opcional me refiero a que no necesitas trabajar con estos números, ya que puedes encontrar el máximo de un bytearray directamente. Recuerda que cuando imprimes un byte, lo que se muestra es el código ascii del carácter usado (puedes notar ahí que hay letras en mayúscula que tienen un cierto código, y otros que son hexadecimales que también tienen su propio código) |
Hola! Esos hexadecimales que te aparecen sí son números, solo que en su representación hexadecimal. Cuando lees un archivo en modo read bytes (con Es fácil confundirse cuando aparecen los hexadecimales, pero recuerda que cada byte está compuesto por 8 bits, osea que imprimir 10 bytes resultaría en 80 caracteres, así que como un archivo está compuesto por muchos bytes, imprimir cada uno de los bits sería larguísimo y muy incómodo. Para evitar llenar tu terminal de 1 y 0, se usa la representación hexadecimal, que no es más que una forma un poco más compacta de representar lo mismo. |
Wena, ahí si los veo como números. Entonces en los bytes cada "caracter" es un haxadecimal?. O sea los caracteres de |
Los \xba, \xfb, etc. son representaciones hexadecimales de números, puedes intentar lo siguiente para comprobarlo: num = b'\xba'
print(int.from_bytes(num, byteorder="little")) # big también sirve El prefijo |
Un byte es un conjunto de 8 bits, por ejemplo:
Los bits son de base 2, es decir que cada dígito representa una potencia de 2, el A modo de ejemplo, el hexadecimal
Así que respondiendo a tu pregunta, en los bytes cada byte puede ser representado como un hexadecimal. Entonces |
Ahhhh ya, ahora me queda mucho más claro. Muchísimas gracias a ambos. |
Hola!
No entiendo muy bien como se realiza este ejercicio, porque se nos pide que a partir de un chunk de 8 bytes, se saque una lista de número. Revisando el jupyter de contenidos de la semana, no encuentro ningun comando que convierta los bytes a enteros como una lista. En la ayudantía de hoy una ayudante usó el comando
int.from_bytes
pero este entregaba solo un número, por lo que tampoco cacho como lograr obtener 8 números separados. ¿Alguna ayuda de como se hace este ejercicio?Gracias de antemano
The text was updated successfully, but these errors were encountered: