Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-04-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Duda convertir de int a char array

Hola a todos, os pongo en situación:

Resulta que quiero pasar un int a un array de char para enviar por una trama, me explico:

Si el int <256

michar[0]=0x00;
michar[1]= (char)miint;

ahora viene el problema, cuando el int>=256, ya que me gustaria hacer lo siguiente:

si por ejemplo tengo que el int es 256, sabemos que en hexadecimal es 0x0100, por lo que yo quiero poner:

michar[0]=0x01; parte alta
michar[1]=0x00; parte baja

Veo que es algo sencillo pero no me aclaro, me podeis echar una ayudita?

Muchas gracias!
Responder Con Cita
  #2  
Antiguo 16-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola mizzard.

Te pongo un ejemplo:
Código:
unsigned char v[100];
unsigned short int i= 0, n= 1023;

  if (n < 256){
    v[i++] = 0;
    v[i++] = n;
  }
  else {
    v[i++] = n & 0xFF;
    v[i++] = n >> 8;
  };
Pero utilizando unsigned char y unsigned short int y no char e int por que, char: 8bits (-128 a 127) e int: 32 bits (-2,147,483,648 a 2,147,483,647)

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 17-04-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Muchisimas gracias por la respuesta... ahora me surge otra duda... como podria hacer el caso contrario? Es decir, basándome en el ejemplo:

pasar de unsigned char michar[2] a unsigned short int?

Hay que tener en cuenta donde se almacena la parte alta y la parte baja

Ejemplo:

michar[0]=0x01 // parte alta
michar[1]=0x2c // parte baja

Resultado:

miint=300
Responder Con Cita
  #4  
Antiguo 17-04-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Poder: 14
mizzard Va por buen camino
Jeje, ya lo he resuelto, expongo mis conclusiones:

PARA PASAR DE unsigned short int a unsigned char[2]
-------------------------------------------------

if (miint< 256){
michar[i++] = 0;
michar[i++] = miint;
}
else {
michar[i++] = miint >> 8;
michar[i++] = miint & 0xFF;
}

PARA PASAR DE unsigned char[2] unsigned a short int
-------------------------------------------------

miint |= michar[0] & 0xFF;
miint <<= 8;
miint |= michar[1] & 0xFF;

hay que tener en cuenta que el num máximo será: 65535

Muchas gracias a ecfisa por su colaboración

Un saludo!
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir char*, char[], string lmpadron C++ Builder 2 29-10-2010 09:08:45
convertir int o char a hexadecimal. bactering C++ Builder 2 05-10-2008 21:18:45
Cargar array of char de un archivo binario JosepZ Varios 9 12-11-2007 23:28:16
Convertir un Single en 4 char cmurua71 Varios 4 15-06-2007 11:25:26
Convertir variable tipo Word a Char andre Varios 2 15-12-2003 20:15:23


La franja horaria es GMT +2. Ahora son las 20:33:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi