When you have string in C, you can add direct hex code inside.
char str[] = "abcde"; // 'a', 'b', 'c', 'd', 'e', 0x00
char str2[] = "abcx12x34"; // 'a', 'b', 'c', 0x12, 0x34, 0x00
Both examples have 6 bytes in memory. Now the problem exists if you want to add value [a-fA-F0-9]
after hex entry.
//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[] = "abcx12e";
Possible solution is to replace after definition.
//This will work, bad idea
char solution[6] = "abcde";
solution[3] = 0x12;
This can work, but it will fail, if you put it as const
.
//This will not work
const char solution[6] = "abcde";
solution[3] = 0x12; //Compilation error!
How to properly insert e
after x12
without triggering error?
Why I'm asking? When you want to build UTF-8 string as constant, you have to use hex values of character if it is larger than ASCII table can hold.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…