![]() |
Pasar varible de 16 bits a dos de 8 bits
Hola compañeros
La cabeza, a ciertas edades, sirve para llevar sombrero. El problema es que no recuerdo como se hace para cargar en dos varibles de 8 bits una de 16. Ya se que es lo más sencillo que hay pero no lo recuerdo y cuanto más busco peor. Por eso he tirado de vosotros. Gracias Pd he tirado del buscador pero no he tenido suerte |
Hola, ¿a qué te refieres exactamente con variables de 8 y 16 bits?
|
Y que contienen esas variables?
Un Saludo. |
Lo dicho del sombrero..jeje si no fuese por las orejas se me caeria.
Tengo una variable int y quiero pasarla a dos unsigne char. Es decir poder manipular de 8 en 8 bits la variable int int contador= 2000; unsigne char menos_peso = 8bits de menos peso de contador unsigne char medio_peso = 8 bits de mas peso de contador En CCs, compilador de pic, lo hago: menos_peso = make8(converter,0) ; medio_peso = make8(converter,1); Recuerdo que se puede hacer tambien con el c++ de builder pero no recuerdo como. Gracias por vuestras prontas respuestas. PD Tambien me he dado cuenta que ha ido a parar a microcontroladores y queria ponerlo en builder. no pasa na ahi se queda como hacerlo con los micros. Resaludos |
Hola.
En delphi existen 2 funciones para ello: SYSTEM.HI y SYSTEM.LO Supongo que en C++ también están. Extracto de la ayuda integrada: function Hi(X: Integer): Byte; Returns the high-order byte of X as an unsigned value. In Delphi code, use Hi to obtain the high-order byte of an expression of type Word or Integer. Note: Hi treats Integer as a 16-bit value, even if it is 32-bit. |
En primer lugar se debe aclarar que un int en un entorno de procesador de 32 bits, ocupa 32 bits y no 16. Quizás lo adecuado sea hablar de un WORD o un short int que si son de 16 bits.
Un int podríamos usarlo si su valor no supera 65535 ó 0xFFFF. Entonces la solución pasa por la aritmética binaria y desplazamientos. Código:
WORD W = 1234; // un valor... |
Otra forma de conseguirlo es usando uniones:
Código:
typedef union{ Saludos. |
Gracias. Las soluciones me han resuelto el problema.
Saludos |
La franja horaria es GMT +2. Ahora son las 15:16:06. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi