2013-04-14 16 views
6

Vorrei convertire un carattere nel valore int. ASCII.Come convertire un carattere ASCII nel suo valore int ASCII?

Potrei riempire un array con tutti i valori possibili e confrontarlo, ma non mi sembra giusto. Vorrei qualcosa di simile

char mychar = "k" 
public int ASCItranslate(char c) 
return c 

ASCItranslate(k) // >> Should return 107 as that is the ASCII value of 'k'. 

Il punto è atoi() non funziona qui come lo è per solo numeri leggibili.

Non farà nulla con gli spazi (ASCII 32).

+0

hai provato nulla? Come, ad esempio, 'return c;'? –

+1

'char mychar =" k "': Oh cielo, hai provato questo? '" k "' è una stringa terminata da null, non un 'char'. Inoltre, le istruzioni 'C++' devono terminare con un punto e virgola. Sicuramente lo sai? – TonyK

risposta

2

fare questo: -

char mychar = 'k'; 
public int ASCItranslate(char c) 
return int(c); 

ASCItranslate(k); // >> should return 107 as that is the ascii value of k 
+0

Non funziona su macchine che utilizzano [EBCDIC] (http://en.wikipedia.org/wiki/EBCDIC). Se si desidera la portabilità, è necessario qualcosa di più complicato. –

+1

EBCDIC non è ASCI, EBCDIC è più vecchio è stato utilizzato solo da IBM nei loro sistemi precedenti. ricordo che anche MSX aveva ASCI quindi questo deve essere vero, lo uso su un Arduino che lo capisce. – user613326

+0

Perché questo è messo in vendita/accettato? Non è nemmeno un codice valido. –

7

solo fare questo:

int(k) 

Sei solo convertire il char a int direttamente qui, senza bisogno di una chiamata di funzione.

5

A char è già un numero. Non richiede alcuna conversione poiché l'ASCII è solo una mappatura dai numeri alla rappresentazione dei caratteri.

È possibile utilizzarlo direttamente come numero se si desidera, o trasmetterlo.

0

In C++, è possibile utilizzare anche static_cast<int>(k) per rendere esplicita la conversione.

+1

La trasmissione è sempre esplicita. L'utilizzo di un cast rende esplicita una ** conversione **. Naturalmente, in quasi tutti i casi il compilatore farà comunque la conversione e il cast è solo rumore. –

+0

Intendevo "esplicito per il programmatore", non per il compilatore. – Tisys

+0

Tuttavia, è la ** conversione ** che viene resa esplicita. Un ** cast ** è qualcosa che scrivi nel tuo codice sorgente per dire al compilatore di fare una conversione; i cast sono ** sempre ** espliciti. –

0
#include <iostream> 

char mychar = 'k'; 
int ASCIItranslate(char ch) { 
    return ch; 
} 

int main() { 
    std::cout << ASCIItranslage(mychar); 
    return 0; 
} 

Questo è il tuo codice originale con i vari errori di sintassi fisse. Supponendo che tu stia usando un compilatore che usa ASCII (che è praticamente tutto in questi giorni), funziona. Perché pensi che sia sbagliato?

0

convertire da un carattere ASCII ad esso è valore ASCII:

char c='A'; 
    cout<<int(c); 

Per convertire da un valore ASCII alla sua caratteri ASCII:

int a=67; 
    cout<<char(a); 
Problemi correlati