diff --git a/cMIPS/include/main.c b/cMIPS/include/main.c
index f46dc897cd5a5195e600ed32caa372ed2bade68e..99ada0145ad848fc714e0b5e5cbcc75335ef1fc3 100644
--- a/cMIPS/include/main.c
+++ b/cMIPS/include/main.c
@@ -23,63 +23,12 @@ int hex2int(char *hex)
 {
     int s= Strlen(hex), i, ans= 0;
     for (i= 0; i< s; i++) {
-        switch(hex[i]) {
-            case 'F':
-            case 'f':
-                ans+= 15*pow16(s-(i+1));
-                break;
-            case 'E':
-            case 'e':
-                ans+= 14*pow16(s-(i+1));
-                break;
-            case 'D':
-            case 'd':
-                ans+= 13*pow16(s-(i+1));
-                break;
-            case 'C':
-            case 'c':
-                ans+= 12*pow16(s-(i+1));
-                break;
-            case 'B':
-            case 'b':
-                ans+= 11*pow16(s-(i+1));
-                break;
-            case 'A':
-            case 'a':
-                ans+= 10*pow16(s-(i+1));;
-                break;
-            case '9':
-                ans+= 9*pow16(s-(i+1));;
-                break;
-            case '8':
-                ans+= 8*pow16(s-(i+1));;
-                break;
-            case '7':
-                ans+= 7*pow16(s-(i+1));;
-                break;
-            case '6':
-                ans+= 6*pow16(s-(i+1));;
-                break;
-            case '5':
-                ans+= 5*pow16(s-(i+1));;
-                break;
-            case '4':
-                ans+= 4*pow16(s-(i+1));;
-                break;
-            case '3':
-                ans+= 3*pow16(s-(i+1));;
-                break;
-            case '2':
-                ans+= 2*pow16(s-(i+1));;
-                break;
-            case '1':
-                ans+= 1*pow16(s-(i+1));;
-                break;
-            default:
-                if (hex[i] != '0')
-                    printf("ERROR!\n");
-                break;
-        }
+        hex[i]-= 48;
+        if (hex[i] > 9)
+            hex[i] -= 7;
+        if (hex[i] > 15)
+            hex[i] -= 32;
+        ans += hex[i] * pow16(s-(i+1));
     }
     return ans;
 }
@@ -110,12 +59,12 @@ int main()
 {
     char n[16], f[16];
     int fib;
-    while (scanf("%s", n) > 0) {
+    while (scanf("%s", n) && n[0]) {  // trocar scanf por getc()
         fib= hex2int(n);
         if (fib < BUF_SZ) {
             fib = buf[fib];
             int2hex(f, fib);
-            printf("%d(%s)\n", fib, f);
+            printf("%d(%s)\n", fib, f); // trocar printf por putc()
         } else
             printf("Valor fora dos limites!\n");
     }