Pregunta

Necesito convertir cadenas Unicode en Python a otros tipos tales como sin firmar y firmado int 8 bits, sin signo y firmado int 16 bits, sin signo y firmado int 32 bits, sin signo y firmado int 64 bits, doble, float, string, sin signo y firmado de 8 bits, sin signo y firmado 16 bits, sin signo y con signo de 32 bits, sin signo y firmado 64 bits.

Necesito ayuda de personas u.

¿Fue útil?

Solución

Utilice int() para convertir la cadena a un entero. Python no tiene diferentes números enteros de ancho fijo por lo que acaba de obtener un tipo de cosa.

A continuación, utilice struct para empacar el número entero en un ancho fijo:

res = struct.pack("=B",i) ## uint8_t
res = struct.pack("=b",i) ## int8_t

res = struct.pack("=H",i) ## uint16_t
res = struct.pack("=h",i) ## int16_t

res = struct.pack("=I",i) ## uint32_t
res = struct.pack("=i",i) ## int32_t

res = struct.pack("=Q",i) ## uint64_t
res = struct.pack("=q",i) ## int64_t

res = struct.pack("=f",i) ## float
res = struct.pack("=d",i) ## double

struct produce un byte-cadena que contiene el número en binario.

EDIT: De los comentarios que suena como lo que desea es convertir la cadena (de dígitos decimales) en un entero. Sólo tiene que utilizar int() para eso, sin embargo, no recibirá toda la complicada desbordamiento / subdesbordamiento la semántica de los tipos especificados. No se puede reproducir en Python que, al menos no sin tener que escribir un montón de código.

Creo que si quieres más ayuda que tendrá que ser más precisos acerca de lo que quiere lograr.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top