Skip to content
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

largo de byte, para pasar de int a byte #343

Open
7 tasks done
vice-rosas99 opened this issue Dec 8, 2021 · 6 comments
Open
7 tasks done

largo de byte, para pasar de int a byte #343

vice-rosas99 opened this issue Dec 8, 2021 · 6 comments
Assignees
Labels
Tarea 3 Dudas sobre la T3

Comments

@vice-rosas99
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

  • Leí las reglas del foro (https://github.com/IIC2233/syllabus/issues/1)
  • Busqué en las issues si ya preguntaron mi duda y no encontré nada parecido (https://github.com/IIC2233/syllabus/issues)
  • Revisé el compilado de dudas de la tarea y no encontré una issue similar a la mía (Duda SOLES_ROBADOS Syllabus#293)
  • Mi duda no se trata sobre una librería, built-in o mala práctica, ya que eso se pregunta en la issue creada para ello.
  • Mi duda no se trata de un tema administrativo o personal, ya que en ese caso debo contactar a mi profe, al Jefe de Bienestar o al correo del curso (https://iic2233.github.io/contacto/)
  • Utilizaré un título descriptivo y llenaré correctamente esta plantilla
  • De ser necesario, solo colocaré código simple que permita explicar mi problema o duda, ya que compartir código de esta evaluación puede ser considerado copia

Duda

me surgió una duda sobre el tamaño de los bytes ya que en mi desencriptador de mesajes estoy trabajando con un metodo built in de python, para pasar 'int' a byte, pero es necesario saber el tamaño del byte, probando con distintos ints me doy cuenta de que no todos los números pueden ser representados con un byte de tamaño 1.
**Por esto pregunto su puedo asumir que todos los bytes en los mensajes se representan con un int que al mismo tiempo es representado por un byte de tamaño 1?

@vice-rosas99 vice-rosas99 added the Tarea 3 Dudas sobre la T3 label Dec 8, 2021
@tocococa
Copy link

tocococa commented Dec 8, 2021

Hola @vice-rosas99, un byte siempre ocupa 8 bits, los objetos int en Python tienen un método que te permite castearlos a una cantidad de bytes fija o viceversa, to_bytes() y from_bytes. Con un byte puedes guardar hasta 255, con 4 (que es lo que se pide en el enunciado) es un número tan grande que no tienes que preocuparte que no quepa su valor.

@tocococa tocococa self-assigned this Dec 8, 2021
@vice-rosas99
Copy link
Author

claro, preguntaba porque estoy usando el método to_bytes() pero necesito un argumento lenght, que sería el tamaño del byte a dar, por eso pregunto si siempre tendré que dar ese valor como 1

@tocococa
Copy link

tocococa commented Dec 8, 2021

El argumento length de ese método no indica el largo del byte, si no el número de bytes, y ahí tienes que colocar el número de bytes que se indica en el enunciado.

@vice-rosas99
Copy link
Author

Mmm es que no se como explicarlo, pq no es para la parte de poner el header y todo eso, lo estoy usando en la desencriptación
si algun ayudante pudiera mirar mi archivo de codificación_de_mensajes.py

@vice-rosas99
Copy link
Author

vice-rosas99 commented Dec 9, 2021

aver lo que pasa es que yo recorro un bytearray en un for, y al ir sacando cada parte del bytearray, no me da objetos de bytes, sino que me da ints, por lo que debo convertir esos ints en bytes:
ej:

a = bytearray(mensaje) # una coleccion de bytes
for i in range(0, len(a):
    elemento = a[i]

en este caso elemento es de tipo int, y necesito que sea byte
por eso pregunto por lo que debería poner en length, ya que para devolverlo a byte pongo:
elemento.to_byes( length, byteorder), que hasta ahora e trabajado como 1 y 'little' respectivamente

@tocococa
Copy link

Si lo que muestras en tu snippet es correcto, no se deberían estar casteando a int, lo que puede ocurrir, es que si haces print() del byte, este se imprima como el char al que corresponde, y por eso estás viendo números, pero también podría ser otro carácter. Ahora si isinstance(elemento, int) retorna True puede ser que los estés casteando implícitamente a 'int' en alguna parte.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

2 participants