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

如何从sprintf生成的十六进制字符串还原Perl的packed_output?

可以还原,具体实现方法如下

原理说明

sprintf "%v02X", $packed_output是无损失的编码操作:它会把二进制数据的每个字节转换成两位大写十六进制字符,并用.作为分隔符。比如二进制字节序列0xAB 0xCD 0xEF会被编码成AB.CD.EF。因为每个字节的信息都被完整保留,所以完全可以逆向还原出原始的$packed_output。

还原步骤(Perl代码实现)

  1. 先将带.分隔的十六进制字符串按.分割,得到单个字节的十六进制片段;
  2. 把这些片段拼接成连续的十六进制字符串;
  3. 用pack "H*"将连续十六进制字符串转回二进制数据。

示例代码:

# 假设这是你生成的十六进制字符串
my $hex = "12.34.56.78.90.AB";
# 还原出原始的$packed_output
my $restored_packed = pack "H*", join "", split /\./, $hex;

验证正确性

你可以通过对比原始$packed_output和还原后的数据来确认结果:

# 对比二进制数据是否完全一致
if ($restored_packed eq $original_packed_output) {
    print "还原成功\n";
} else {
    print "还原失败\n";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:15:30