Listes des fonctions ascii Python, Java et C
Fonction ascii en Python
Récupérer la valeur d'une chaîne de caractères ascii
En utilisant la fonction map() et ord() :
map(ord, "abcde")>>> [97, 98, 99, 100, 101]La fonction ord()
La fonction ord() retourne la valeur unicode d'un caractère spécifié. Si la longueur de la chaîne est supérieure à un, une erreur sera déclenchée.
La fonction chr()
La fonction chr() retourne le caractère ascii correspondant à sa valeur unicode spécifiée. Le paramètre entré doit être compris entre 0 et 255.
Fonction ascii en Java
Ascii en Java, utilisation des cast
Pour transformer un caractère ascii en son équivalent numérique on utilise les cast, exemple :
char carac = 'a';int codeAsciiDeCarac = (int) carac;>>> 97Et à l'inverse pour obtenir un caractère ascii à l'aide de sa valeur :
int codeascii = 97;char caractereA = (char) codeascii;>>> aFonction ascii en C
Ascii en C, utilisation des cast
Pour transformer un caractère ascii en son équivalent numérique on utilise les cast, exemple :
char carac = 'a';int codeAsciiDeCarac = (int) carac;>>> 97Et à l'inverse pour obtenir un caractère ascii à l'aide de sa valeur :
int codeascii = 97;char caractereA = (char) codeascii;>>> aFonction ascii en JavaScript
JavaScript ne propose pas de fonction globale équivalente à ord() : le travail se fait avec deux méthodes de l'objet String. charCodeAt() s'appelle sur une chaîne et attend la position du caractère à examiner, la première valant zéro. String.fromCharCode() fait le trajet inverse et accepte autant de codes que voulu.
'a'.charCodeAt(0);>>> 97String.fromCharCode(97);>>> 'a'codePointAt() et fromCodePoint() : au-delà du plan multilingue de base
Une chaîne JavaScript est stockée en UTF-16 : chaque unité tient sur seize bits. Les caractères dont le point de code dépasse U+FFFF — émojis, écritures anciennes, symboles rares — occupent deux unités, une paire de substitution. Sur eux, charCodeAt(0) ne lit que la première moitié et renvoie un nombre sans rapport avec le caractère.
codePointAt() corrige ce défaut : la méthode détecte la paire et renvoie le vrai point de code. String.fromCodePoint() la reconstruit à l'identique. Sur un caractère ascii, les deux familles donnent le même résultat, ce qui en fait le choix par défaut raisonnable.
'😀'.charCodeAt(0);>>> 55357 // moitié de paire de substitution'😀'.codePointAt(0);>>> 128512String.fromCodePoint(128512);>>> '😀'Fonction ascii en PHP
PHP porte les mêmes noms que Python, ord() et chr(), mais pas la même logique : une chaîne y est une suite d'octets, sans encodage déclaré. ord() renvoie la valeur du premier octet, chr() fabrique une chaîne d'un seul octet. Sur les 128 caractères de l'ascii, un caractère occupant toujours un octet, le comportement est identique à celui de Python.
ord('a');>>> 97chr(97);>>> 'a'mb_ord() et mb_chr() pour l'UTF-8
Dès qu'un caractère sort de l'ascii, la différence saute aux yeux. Depuis PHP 7.2, l'extension mbstring fournit mb_ord() et mb_chr(), qui prennent un encodage en second argument et raisonnent en points de code Unicode et non en octets. Ce sont elles qu'il faut employer sur du texte français.
ord('é');>>> 195 // premier octet UTF-8, pas le caractèremb_ord('é', 'UTF-8');>>> 233mb_chr(233, 'UTF-8');>>> 'é'Fonction ascii en C#
C# suit la voie de Java et du C : aucune fonction dédiée, un simple cast. Le type char y est une unité UTF-16 sur seize bits, et la conversion vers int est implicite — écrire int code = carac; compile aussi bien. Le cast explicite reste plus lisible.
char carac = 'a';int codeAscii = (int) carac;>>> 97char lettre = (char) 97;>>> aLe retour au caractère exige en revanche un cast explicite. Pour convertir une chaîne complète en octets ascii, la bibliothèque standard propose Encoding.ASCII.GetBytes(), qui remplace par un point d'interrogation tout caractère absent de la table.
Fonction ascii en SQL
La plupart des moteurs exposent une paire de fonctions ASCII() et CHAR() : la première renvoie le code du premier caractère de la chaîne reçue, la seconde reconstruit le caractère à partir de son code.
SELECT ASCII('a');>>> 97SELECT CHAR(97);>>> aLa syntaxe varie toutefois selon le moteur. PostgreSQL nomme la seconde fonction chr(), tout comme Oracle avec CHR(). SQLite ignore ASCII() et emploie unicode() et char(). SQL Server ajoute UNICODE() et NCHAR() pour les chaînes nationales. Le comportement sur un caractère accentué dépend en outre du jeu de caractères de la colonne autant que du moteur : testez plutôt que de supposer.
Fonction ascii en Bash
Le shell n'a pas de fonction dédiée, mais printf en tient lieu dans les deux sens. Un argument précédé d'une apostrophe simple est lu comme un caractère dont on veut la valeur : d'où la syntaxe "'a", déroutante mais standard. Dans l'autre sens, les échappements \x en hexadécimal et \nnn en octal produisent le caractère directement.
printf "%d" "'a">>> 97printf "\x41">>> Aprintf "\101" # la même valeur en octal>>> ALe piège des accents et de l'UTF-8
Le même appel, sur le même caractère, ne renvoie pas la même valeur d'un langage à l'autre. La cause tient en une phrase : certains langages raisonnent en caractères, d'autres en octets, et l'écart n'apparaît qu'au premier accent.
# Python 3 : ord() renvoie un point de code Unicodeord('é')>>> 233list('é'.encode('utf-8'))>>> [195, 169] // PHP : ord() renvoie un octetord('é');>>> 195strlen('é');>>> 2En Python 3, une chaîne est une suite de points de code Unicode : ord() les renvoie tels quels, 233 pour é et 8364 pour le signe euro. Ces valeurs sortent de l'ascii, qui s'arrête à 127, mais elles décrivent correctement le caractère. En PHP, la même chaîne est une suite d'octets : en UTF-8, é en occupe deux, 195 et 169, et ord() ne rapporte que le premier. strlen() retourne d'ailleurs 2 pour ce caractère unique.
La même fracture traverse les autres langages. Java, C# et JavaScript manipulent de l'UTF-16 : un caractère accentué y tient sur une unité, un émoji sur deux. En C, un char est un octet, donc 'é' n'y rentre pas en UTF-8 et le compilateur émet un avertissement.
Trois réflexes évitent la mauvaise surprise : connaître le modèle de chaîne du langage — octets ou points de code ; déclarer l'encodage quand l'API le permet, comme le second argument de mb_ord() ; se souvenir qu'au-delà de 127 on ne parle plus d'ascii mais d'Unicode, sujet détaillé dans notre comparatif entre ASCII, Unicode et UTF-8.
Convertir une chaîne entière, pas un seul caractère
Les fonctions ci-dessus travaillent sur un caractère à la fois : ord() lève une exception si on lui passe une chaîne plus longue. Pour traiter un mot, il faut donc parcourir la chaîne, ce que chaque langage exprime à sa manière.
Python privilégie la liste en compréhension, plus rapide et plus lisible que map() lorsqu'on veut vraiment une liste. Le chemin inverse assemble les caractères avec join().
[ord(c) for c in 'abc']>>> [97, 98, 99]''.join(chr(c) for c in [72, 105])>>> 'Hi'En JavaScript, la décomposition par l'opérateur de propagation est préférable à split('') : elle découpe par point de code et ne casse pas les paires de substitution. Array.from() accepte en prime une fonction de transformation, ce qui évite un map().
[...'abc'].map(c => c.charCodeAt(0));>>> [97, 98, 99]String.fromCharCode(...[72, 105]);>>> 'Hi'Array.from('Hé😀', c => c.codePointAt(0));>>> [72, 233, 128512]Ailleurs, l'idée reste la même. PHP écrit array_map('ord', str_split('abc')). Java passe par "abc".chars(), qui produit directement un flux d'entiers. C# utilise "abc".Select(c => (int) c). En C, une boucle sur le tableau de caractères jusqu'au terminateur nul suffit. Pour visualiser le résultat sans écrire une ligne, voyez texte en binaire ou ascii en décimal.
Tableau de correspondance des fonctions
La conversion dans les deux sens, pour chacun des langages couverts sur cette page. Les exemples portent tous sur la lettre a, dont le code ascii est 97.
| Langage | Caractère → code | Code → caractère |
|---|---|---|
| Python | ord('a') | chr(97) |
| Java | (int) 'a' | (char) 97 |
| C | (int) 'a' | (char) 97 |
| JavaScript | 'a'.charCodeAt(0) | String.fromCharCode(97) |
| PHP | ord('a') | chr(97) |
| C# | (int) 'a' | (char) 97 |
| SQL | ASCII('a') | CHAR(97) |
| Bash | printf "%d" "'a" | printf "\x61" |
Ces équivalences valent pour les codes 0 à 127 ; au-delà, chaque colonne mérite la note de bas de page évoquée plus haut. Pour vérifier une valeur sans lancer d'interpréteur, la table ascii de 0 à 127 les liste toutes.
Utilisation des fonctions ascii dans les langages de programmation
L'utilisation de telles fonctions dans les différents langages de programmation est souvent utile pour faire face à divers problèmes. Nous avons répertorié pour vous une liste des fonctions ascii selon les différents langages de programmation. Notez que la façon de faire diverge en fonction des langages et qu'il existe différents moyens afin d'obtenir l'équivalent ascii d'un caractère.
Pour mieux comprendre la gestion du temps de ces fonctions nous vous conseillons de vous référer à l'utilisation d'un Réveil en ligne en heures, minutes et secondes.
Questions fréquentes
Quelle est la fonction ascii en Python ?
Python n'a pas de fonction nommée ascii_code() : il en a deux, natives et toujours disponibles. ord() prend un caractère et renvoie son code, comme dans ord('a') qui vaut 97. chr() fait l'inverse et reconstruit le caractère, chr(97) valant 'a'. Attention à ne pas les confondre avec la fonction intégrée ascii(), qui ne convertit rien : elle renvoie une représentation de l'objet où les caractères non ascii sont échappés.
Quelle différence entre ord() et chr() ?
Les deux fonctions sont réciproques. ord() va du caractère vers le nombre : elle attend une chaîne d'exactement un caractère et renvoie un entier. chr() va du nombre vers le caractère : elle attend un entier et renvoie une chaîne d'un caractère. Appliquer l'une puis l'autre ramène toujours au point de départ, ainsi chr(ord('A')) vaut 'A'. Un moyen mnémotechnique : ord pour ordinal, le rang du caractère, et chr pour character, le caractère lui-même.
Comment convertir une chaîne entière en codes ascii ?
ord() refuse les chaînes de plus d'un caractère : il faut donc parcourir la chaîne. En Python, la liste en compréhension [ord(c) for c in 'abc'] renvoie [97, 98, 99]. En JavaScript, [...'abc'].map(c => c.charCodeAt(0)) donne le même résultat. En PHP, array_map('ord', str_split('abc')) fait le travail. Pour visualiser le résultat sans écrire une ligne de code, utilisez le convertisseur de texte en binaire ou le convertisseur ascii en décimal.
Pourquoi ord() renvoie-t-il une valeur supérieure à 127 ?
Parce que le caractère fourni n'appartient pas à l'ascii, qui s'arrête au code 127. En Python 3, ord() renvoie un point de code Unicode : ord('é') vaut 233 et ord('€') vaut 8364. La valeur n'est donc pas fausse, elle sort simplement de la table ascii. Si vous obtenez 195 ou 226, c'est le signe inverse : la fonction travaille sur des octets UTF-8 et vous renvoie le premier octet du caractère, comme le fait ord() en PHP. Le sujet est détaillé sur la page ASCII, Unicode et UTF-8.
Comment obtenir le code ascii en JavaScript ?
Avec la méthode charCodeAt(), appelée sur une chaîne avec la position du caractère : 'a'.charCodeAt(0) renvoie 97. Le chemin inverse passe par String.fromCharCode(97), qui redonne 'a'. Pour un caractère hors du plan multilingue de base, un émoji par exemple, préférez codePointAt() et String.fromCodePoint() : charCodeAt() ne lirait que la première moitié de la paire de substitution et renverrait un nombre sans rapport avec le caractère.

