We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
... or a misunderstanding on my part ?
From string "\x0CTUV", the compiler generates 0x0C 0x55 0x56 0x57 0x00
From string "\x0CABC", the compiler generates 0xCA 0x42 0x43 0x00 ... rather than the expected 0x0C 0x41 0x42 0x43 0x00
I thought the \x escape sequence in a string instructed the compiler to encode the very next two characters as a hexadecimal byte.
Am I missing something ?
Yes, but see the quoted part of the standard below - your part of the contract is to make sure that the hexadecimal constant will fit in an unsigned 8 bit character if the compiler consumes all valid characters. In your case, the number was too large and when you violate a requirement in the standard the compiler is no longer obliged to perform in a specific way.