Lorsque vous avez chaîne en C, vous pouvez ajouter directement le code hex à l'intérieur.
char str[] = "abcde"; // 'a', 'b', 'c', 'd', 'e', 0x00
char str2[] = "abc\x12\x34"; // 'a', 'b', 'c', 0x12, 0x34, 0x00
Les deux exemples ont 6 octets en mémoire. Maintenant, le problème existe si vous souhaitez ajouter de la valeur [a-fA-F0-9]
après l'hex d'entrée.
//I want: 'a', 'b', 'c', 0x12, 'e', 0x00
//Error, hex is too big because last e is treated as part of hex thus becoming 0x12e
char problem[] = "abc\x12e";
Solution Possible est de les remplacer après la définition.
//This will work, bad idea
char solution[6] = "abcde";
solution[3] = 0x12;
Cela peut fonctionner, mais ce sera un échec, si vous le mets en const
.
//This will not work
const char solution[6] = "abcde";
solution[3] = 0x12; //Compilation error!
Comment insérer correctement e
après \x12
, sans déclencher d'erreur?
Pourquoi je pose la question? Lorsque vous voulez construire UTF-8 chaîne de caractères comme une constante, vous devez utiliser les valeurs hexadécimales de caractère, si elle est plus grande que la table ASCII peut contenir.