I want to get the hexadecimal value of 你
, someone tell me to use printf "%x" "'你"
, but I don’t know what’s the function of '
in printf "%x" "'你"
, why use '
before 你
?
Advertisement
Answer
From the bash manual:
Arguments to non-string format specifiers are treated as C constants, except that a leading plus or minus sign is allowed, and if the leading character is a single or double quote, the value is the ASCII value of the following character.
%x
is a numeric specifier, not a string one, so this section applies. The documentation is a bit wrong (or outdated) when it speaks about ASCII values, but it’s correct in spirit: an argument of '你
evaluates to the numerical value of the unicode codepoint 你
(without the quote, it would be a syntax error, since 你 isn’t a number). The codepoint value that it evaluates to is then formatted in hexadecimal by %x
.