Para implementar la conversión de un entero sin signo a una representación de cadena hexadecimal, se requiere que no se pueda llamar a ninguna función. El programa es el siguiente, por favor comenten, cuanto más detallado mejor.
#include lt;stdio.hgt;
void intToHex(int n, char* s)
{
int temp = 0; Una variable local, que guarda el resultado intermedio de la transformación
char t[128]; Una variable temporal, que registra el resultado de la transformación
int index = 0; posición actual de la cadena de operación actual, comenzando con 0
while(n) Si n no es igual a 0, continúa el bucle
{
temp = n 16; temp es igual a n dividido por 16 Resto después
if(temp gt; 9) Si el resto es mayor que 9
{
*(t index ) = 'A' temp - 10; si temp=10, entonces la posición actual=A, 11 es B, 12 es C, 13 es D, 14 es E, 15 es F y el índice 1 apunta al siguiente bit de la operación de cadena Si conoce la tabla de códigos ASCII, será fácil de entender y si no la conoce, deberá aprenderla. Es imposible aprender bien a programar sin saber ASCII
}
else Si no es mayor que 9
{
*( t index ) = '0' temp; Luego, el número de este bit se escribe en la cadena, y el número es el índice 1 al mismo tiempo, apuntando al siguiente bit de la operación de cadena.
Esto también está relacionado con ASCII
}
n /= 16; divide n entre 16 y luego asigna el cociente a n
} Cuando n es igual a 0, el ciclo finaliza, la longitud de la cadena se registra en el índice
*(t index) = '\0' Escribe la marca de final de la cadena en la posición actual
; int j = 0 ;
for(int i = index - 1; i gt; = 0; --i) bucle, asigna cada carácter del resultado de la transformación a s para regresar a la función principal p>
{
*(s j ) = *(t i);
}
*(s j) = '\0'; p>
}
int main(void)
{
char s[128]; declara una cadena para guardar el resultado
int n; variable entera, utilizada para guardar datos de entrada
printf("Ingrese un número entero sin signo: "); la solicitud de entrada se muestra en la pantalla
scanf("d ", amp; n); Use el teclado para ingresar un número entero y guárdelo en la variable n
intToHex(n, s); Convierta el número entero en n en una cadena hexadecimal y almacene el resultado en el string s
printf("Su entrada: s\n", s Mostrar el resultado de la transformación
return 0;
}
<); p> Hay otra laguna en este programa, es decir, antes de llamar a intToHex, debes determinar que el número entero de entrada debe ser mayor que 0, porque el algoritmo convierte números enteros.