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");