You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C语言中以十六进制字符形式传递命令行参数字符串

解决方案

由于无法修改现有C代码,需要通过shell的转义解析能力,将十六进制形式的字符串转换为实际字节后传入程序,以下是几种可行方式:

1. 跨shell通用:利用printf生成字节序列

printf支持解析十六进制转义序列,可直接生成对应字节并作为参数传递:

./a.out "$(printf '\xfa\xbc\x53\x34\x2c')"

针对你示例中的\x55\x56\x57\x58,执行命令:

./a.out "$(printf '\x55\x56\x57\x58')"

程序会直接输出UVWX,符合预期。

2. Bash/Zsh专属:ANSI-C风格引号

Bash和Zsh支持$'...'语法,可直接解析转义序列,写法更简洁:

./a.out $'\xfa\xbc\x53\x34\x2c'

对应示例的命令为:

./a.out $'\x55\x56\x57\x58'

3. Fish Shell 处理方式

Fish Shell可通过printf或string escape实现:

# 方式1:用printf生成
./a.out (printf '\xfa\xbc\x53\x34\x2c')
# 方式2:用string escape解析
./a.out (string escape -n '\xfa\xbc\x53\x34\x2c')

注意事项

  • 不可打印字符(如\xfa、\xbc)在终端的显示样式取决于终端模拟器,可能会显示为方块、问号等占位符,但程序已正确接收对应字节。
  • 转义序列必须严格遵循\x后接两位十六进制字符的格式,否则shell无法正确解析。

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 15:40:37