Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    stringhe esadecimali

    ciao ragazzi, sono nuovo del forum, mi sono appena registrato, sto facendo un programma in c che ha bisogno di una porzione di codice per trasformare una stringa di due caratteri in un numero esadecimale, non ho voglia di lavorare sui bit...... Sicuramente esiste una funzione(che non sia atoi che non va bene....) che permette di farlo, qualcuno la conosce??? grazie a tutti.....

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: stringhe esadecimali

    Originariamente inviato da danypower
    "... una porzione di codice per trasformare una stringa di due caratteri in un numero esadecimale ...
    Spiegati meglio ... e dato che sei nuovo, leggi il Regolamento prima di postare ...

  3. #3
    Codice PHP:
    #include <stdio.h>
    #include <string.h>

    static void StringToHex (const char theString, const size_t theLen){
        
    int i;
        for (
    0theLen; ++i){
            
    printf ("%X"theString [i]);
        }
    }

    int main (int argcchar * const argv[]){
    //
    // Compiled and tested with:
    // i686-apple-darwin8-gcc-4.0.1 (GCC) 4.0.1 (Apple Computer, Inc. build 5367)
    //
    // Output: 4369616F
    //
        
    const char aString "Ciao";
        
    StringToHex (aStringstrlen (aString));
        return 
    0;


  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318

    Moderazione

    Invito l'autore della discussione a leggere il regolamento.
    Il linguaggio di programmazione va obbligatoriamente specificato nel titolo della discussione.


    Aggiungo io.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5

    [c/c++] stringhe esadecimali

    Ciao ragazzi, scusate infinitamente, avete ragione......
    D'ora in poi andrà meglio....
    Mi spiego meglio, io ho bisogno di una funzione che mi trasforma una stringa in intero e che però supporti i numeri esadecimali
    esempio, se scrivo:
    char *str = "3a";
    int num = atoi(str);
    printf("%x", num);
    mi apparirà sullo schermo 3, non 3a, non vede i caratteri, come fare per ovviare al problema?????? Aiutatemi!!!!!!!!!!!!!!!! Se risolvo questo il mio programma è completo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Prova con queste funzioni (non assicuro che siano corrette e, soprattutto, non funzionano con numeri negativi!):
    codice:
    inline int intpow(int val, int p) { return (p ? val * intpow(val, p-1) : 1); }
    
    int valore(char c) {
       int ret = 0;
       if ((c >= '0') && (c <= '9')) {
          ret = c - '0';
       } else {
          switch( (char) (c & 223) ) {
             case 'A': ret = 10; break;
             case 'B': ret = 11; break;
             case 'C': ret = 12; break;
             case 'D': ret = 13; break;
             case 'E': ret = 14; break;
             case 'F': ret = 15; break;
          }
       }
       return ret;
    }
    
    int conv(char *str, int radix) {
       int ret = 0;
       int i = 0;
       switch( radix ) {
          case 10:
             for(i = strlen(str); i; i--) {
                ret += (str[i-1] - '0') * intpow(radix, strlen(str)-i);
             }
             break;
          
          case 16:
             for(i = strlen(str); i; i--) {
                ret += valore(str[i-1]) * intpow(radix, strlen(str)-i);
             }
       }
       
       return ret;
    }
    Un esempio di utilizzo:
    codice:
    int main(int argc, char **argv) {
       printf("Conversione 0xAF: %d\n", conv("af", 16));
       return 0;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Piu' semplicemente ...

    codice:
      char *str = "3a";
      int num;
    	
      sscanf(str, "%x", &num); 
    
      printf("%x", num);

  8. #8

    [c/c++] stringhe esadecimali

    Grazie mille a LELEFT e a OREGON, funziona tutto perfettamente!!!!!!! Grandiiii!!!!!!!!!!!!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.