Juergen Asked: 2022-05-14 07:18:13 +0800 CST2022-05-14 07:18:13 +0800 CST 2022-05-14 07:18:13 +0800 CST 在 bash 中打印字符的十六进制值 772 在 C 中,printf ("%2X\n", 'A');打印41. 在 bash 中,printf "%2X\n" 'A'打印bash: printf: A: invalid number. 如何在 C 中41使用printfin进行打印bash? 请不要推荐使用外部工具,od因为这太慢了:我正在寻找一种 bash 内部方法。 bash printf 2 个回答 Voted DrMoishe Pippik 2022-05-14T14:46:36+08:002022-05-14T14:46:36+08:00 虽然很短,@Juergen 评论说这回答了他的问题。使用以下内容: printf "%X\n" \"A\" 请注意,这提供了单字节(“ASCII”,UTF-8)字符代码。有关使用 bash shell 和/或 python 的 char -> hex value 和相反的 hex -> char 的更多信息,请参阅Unix & Linux StackExchange。 Best Answer glenn jackman 2022-05-14T11:06:11+08:002022-05-14T11:06:11+08:00 在printfbash 手册中,您会发现: 非字符串格式说明符的参数被视为 C 语言常量,但允许使用前导加号或减号,并且如果前导字符是单引号或双引号,则该值是后面字符的 ASCII 值。 (我的重点) 这些 shell 函数封装了 char_to_hex 和 hex_to_char。从 perl 中窃取的函数名 # ord: the ascii value of a character # $ ord "A" #=> 65 # ord() { printf "%d" "\"$1" } # chr: the character represented by the given ASCII decimal value # $ chr 65 #=> A # chr() { printf "\x$(printf "%x" "$1")" } 然后: $ ord A 65 $ printf '%02X\n' "$(ord A)" 41
虽然很短,@Juergen 评论说这回答了他的问题。使用以下内容:
printf "%X\n" \"A\"
请注意,这提供了单字节(“ASCII”,UTF-8)字符代码。有关使用 bash shell 和/或 python 的 char -> hex value 和相反的 hex -> char 的更多信息,请参阅Unix & Linux StackExchange。
在
printf
bash 手册中,您会发现:(我的重点)
这些 shell 函数封装了 char_to_hex 和 hex_to_char。从 perl 中窃取的函数名
然后: