Hay un procedimiento rápido que no implica representación intermedia. Usted sólo necesita cuatro tablas de búsqueda suman un total de 544 entradas.
Las respuestas anteriores han establecido que la conversión se puede realizar en bloques de 3 (trabajando de derecha a izquierda). Considerar a la derecha del bloque en el ejemplo:
0xA03 = 1010 0000 0011 B
Es necesario romper esta cadena binaria en cuatro grupos de tres bits, lo que voy a número 1, 2, 3, 4 de la derecha a la izquierda:
1: 011 B
2: 000 B
3: 000 B
4: 101 B
La primera depende sólo de la derecha dígito hexadecimal 0x3. El segundo sólo depende de los dos dígitos de la derecha 0x03 (se pone su último bit de la 0x3 y sus dos primeros bits de 0 x 0). El tercer sólo depende de los dígitos segundo y tercero 0xA0. El cuarto sólo depende de la tercer dígito 0xA. De dónde, sólo es necesario realizar las siguientes conversiones, cada uno de los cuales pueden ser almacenados en su propia estática de la tabla de búsqueda:
1: 0 x 3 --> 03 [16 entradas de cubrir todas las posibilidades]
2: (0 x 0 0 x 3) --> 00 [16 * 16 entradas]
3: (0xA, 0x0) --> 00 [16 * 16 entradas]
4: 0xA --> 5 [16 entradas].
Ahora se repite con el siguiente bloque, relleno con ceros a la izquierda según sea necesario. Continuando con el ejemplo, el siguiente bloque es 0x001:
1: 0 x 1 --> 01
2: (0 x 0 0 x 1) --> 00 horas.
Usted puede parar aquí, ya que todos la entrada original se ha consumido. La salida, trabajando hacia atrás, es 0015003.
Esto responde directamente a las dos partes de la pregunta original: proporciona una conversión sencilla sin medio paso y evita la base 10 (que rara vez se utiliza para el equipo de la conversión de todos modos: por lo general el trabajo que se hace con poco desplazamiento y el enmascaramiento, esencialmente una operación binaria). En caso de que este procedimiento todavía se parece demasiado a la de otras soluciones propuestas, por favor, tenga en cuenta que se realiza absolutamente ninguna aritmética (aparte de disminuir los punteros de entrada y de salida, ya que procede): se necesita una representación de cadena de caracteres (hex) como su entrada, se utiliza a los personajes a su índice de tablas, y las salidas de un octal cadena.