Aqui un poco de codigo.
Comenzando por el codigo que se encarga de leer un archivo de texto en modo binario de lectura:
- Código: Seleccionar todo
strcat( (char*) room_inst[ count ], (char*) "" );
do{
fscanf( room, "%c", &leido );
sprintf( (char*) &room_inst[ count ], "%c" , (char*) leido );
count+=1;
}while( !feof(room) );
Con este codigo lo que hago el leer el archivo hasta el final e ir guardando los datos dentro de la variable
room_inst que es un arreglo de punteros de tipo
unsigned char.
Al hacer una prueba con:
- Código: Seleccionar todo
printf("\n%x\n", room_inst[1] );
Me imprime el valor 50
Ahora el archivo binario abierto se ve de la siguiente manera:
- Código: Seleccionar todo
C3 50 01 FF FF
00 00 00 C3 00
Esto de modo grafico lo que significaria en hexadecimal:
- Código: Seleccionar todo
0 1 2 3 4
5 6 7 8 9
Y en decimal seria lo siguiente:
- Código: Seleccionar todo
195 80 1 255 255
0 0 0 195 80
Ahora como vemos el archivo trae un valor
50 que en
decimal es
80 y su posicion segun los valores
hexadecimales es
1... (En este ejemplo claro)
Ahora lo que quiero es poder jalar ese 50 a una variable
unsigned short.
El siguiente codigo es:
- Código: Seleccionar todo
for( ; PC <= 600 ; ){
opCode = room[PC];
switch( opCode ){
case (0xC3):
break;
default:
PC+=1;
break;
}
}
Especificamente en ese case es donde necesito hacer la asignacion del valor
50 (que es el que tiene el archivo que lei en forma binaria) a la variable
PC que como comento es
unsigned short, puesto que sigo necesitando que se pueda usar tanto en el for como indice del arreglo de punteros.
Esta variable
room es una copia de
room_inst que hice de la siguiente manera:
- Código: Seleccionar todo
room = (unsigned char*) room_inst;
Lo hice por que se encuentran en clases diferentes.
Casi lo olvido el archivo lo abro de la siguiente manera:
FILE* room = fopen(path, "rb");