Dev - C++ - lo saben?

 
Vista:

lo saben?

Publicado por GAZMO (3 intervenciones) el 04/01/2002 21:02:06
por que un numero hexadecimal que se representa con dos digitos,
en el c puedes scribirlo con mas de dos digitos? ej 0x2fa2b .

ya se que el "0x " no cuenta.

gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:lo saben?

Publicado por Ismael (100 intervenciones) el 04/01/2002 21:37:17
No entiendo bien tu pregunta, pero si un número se escribe con dos dígitos, cualquier representacion con 4 dígitos en el mismo sistema de numeración, debe representar otro valor.
¿Podrías aclara más la duda?
Un saludo
Ismael
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

aclaracion

Publicado por GAZMO (2 intervenciones) el 04/01/2002 22:44:01
un valor hexadecimal se representa con dos digitos.
en el lenguaje c sin embargo por alguna razon se veo que tienen mas digitos (pero no siempre)el valor cambia claro que no es el mismo o sea no es el mismo numero, eso no importa, lo que quiero saber es como representa el c los numeros hexadecimales por que como te repito tienen mas de dos digitos, quiza haya que factorizar o algo no se, lo que yo quiero es su conversion en ascii. y solo lo hago con valores de dos digitos y con el c no puedo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:aclaracion

Publicado por Néstor (7 intervenciones) el 05/01/2002 05:03:37
No se si entendí bien tu pregunta, pero C no hace ningun manejo particular de los números hexadecimales, si por ejemplo escribís
int n = 0xABCD
la variable n contiene ese número (que es el 43981 decimal).
La conversión a caracteres ASCII se hace con números de 2 dígitos hexadecimales, si mirás 0xABCD como caracteres, en realidad ves dos caracteres 0xAB y 0xCD. Lo que si sucede, es que los números enteros están almacenados al revés (en computadoras con micros Intel)
por lo que vas a ver 0xCD 0xAB.
No se si esto contesta tu progunta, cualquier cosa preguntá otra vez
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

mas preguntas

Publicado por gazmo (3 intervenciones) el 07/01/2002 15:58:25
tengo un archivo con informacion todo en hexadecimal, la parte de datos de este archivo contiene numeros de dos digitos con palabras entendibles en ascii, pero la primera parte de este archivo tiene numeros hexadecimales de hasta 5 digitos, que creo contiene las direcciones de cabeceras de la parte que contiene numeros de dos digitos con palabras entendibles en ascii. (understand?). y aun no encuentro la relacion entre estas direcciones de las cabeceras, y la parte de datos.

bueno eso era para que veas mi problema.
ahora, cuando convierto algunos numeros hexadecimales de la primera parte me saca un texto ascii como por ejemplo
§0
§^
c
}


R{
R_
)
o sea cosas intendibles.

preguna

0xABCD = 43981 = ½ <-- esto es valido? tambien poseen estos numeros un valor ascii?

te mando algo de la parte de adelante de el archivo.

//------
AnsiString dataPath;
#pragma package(smart_init)
//Variable headers, contiene las direcciones de las cabeceras en el texto
HEADER_STRUCT headers[69] = {
{0x10c, 0x189},{0x1530, 0x155e},{0x1663, 0x167d},{0x489f, 0x48ba},{0x527b, 0x52dc},{0x61cc, 0x61f0},{0x7212, 0x7261},{0x85dd, 0x85f6},
{0x8b87, 0x8bac},{0x8ee1, 0x8f01},{0x9489, 0x94d0
//-------

gracias. por todo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mas preguntas

Publicado por Néstor (7 intervenciones) el 09/01/2002 05:39:33
Hola,
Los números se pueden escribir en cualqier base, como por ejemplo decimal, binaria, octal, hexadecimal, etc. La cantidad de digitos que necesites depende del número y de la base.
Efectivamente 0xABCD es 43981 en decimal, y también es 1010101111001101 en binario. Todas esas representaciones son simples cambios de base de un número.

(continua...)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:mas preguntas

Publicado por Néstor (7 intervenciones) el 09/01/2002 05:42:05
Ahora bien, el ASCII es un juego de caracteres. Se eligieron 256 símbolos distintos y a cada uno se le asignó un número correlativo entre 0 y 255, o lo que es lo mismo, entre 0x00 y 0xFF.
En las computadoras actuales un byte es capaz de almacenar un número entre 0 y 255, por lo tanto se puede hacer corresponder a cada byte un símbolo ASCII
No es una operación numérica pasar de hexadecimal a ASCII, sin embargo cuando una computadora guarda un número, por más que este ocupe varios bytes, se puede mirar cada uno de esos bytes por separado como si cáda uno fuese un número, y transformar cada número (byte) a un caracter ASCII individual, por lo tanto la traducción de un número a ASCII tendrá un caracter ASCII cada dos dígitos hexadecimales. Si queres pensa en el código ASCII como un pasage a base 256 de un número (si esto te confunde olvidalo).
Teniendo eso en cuenta 0xABCD se divide en 0xAB y 0xCD, y cada uno por separado lo pasas a ASCCI ½ para el primero y = para el segundo.
Otra cosa que tenés que tener en cuenta es que si guardas en memoria, o en un archivo binario un número de más de dos dígitos hexadecimales (por ejemplo 0xABCD) en una computadora PC (no Mac) se guarda al reves, en lugar de ver ½= pondría =½ asi que tené en cuenta a la hora de la traducción

Espero haberte ayudado, cualquier cosa avisame
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar