跟进我之前的评论(不确定如何将 *gz 文件转换为十六进制字符串)...
我发现我可以用 base64 做类似的事情,其想法是 base-64 字符串将更容易使用 (ymmv)。
创建一个包含所需文本“图像”的文件,例如:
$ cat heart
Love Love
LoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLove
Love
通过base64 运行文件以生成表示文件内容的base-64(而不是hex==base-16)字符串,例如:
$ base64 heart
ICAgTG92ZSAgICAgICAgICBMb3ZlCiAgTG92ZUxvdmVMb3ZlTG92ZUxvdmUKTG92ZUxvdmVMb3ZlTG92ZUxvdmVMb3ZlCkxvdmVMb3ZlTG92ZUxvdmVMb3ZlTG92ZQpMb3ZlTG92ZUxvdmVMb3ZlTG92ZUxvdmUKICBMb3ZlTG92ZUxvdmVMb3ZlTG92ZQogICAgTG92ZUxvdmVMb3ZlTG92ZQogICAgICBMb3ZlTG92ZUxvdmUKICAgICAgICAgIExvdmUK
此时您可以使用以下修改后的命令将上面的字符串echo 然后通过base64 -d 进行管道传输(即替换`gunzip),例如:
$ echo "ICAgTG92ZSAgICAgICAgICBMb3ZlCiAgTG92ZUxvdmVMb3ZlTG92ZUxvdmUKTG92ZUxvdmVMb3ZlTG92ZUxvdmVMb3ZlCkxvdmVMb3ZlTG92ZUxvdmVMb3ZlTG92ZQpMb3ZlTG92ZUxvdmVMb3ZlTG92ZUxvdmUKICBMb3ZlTG92ZUxvdmVMb3ZlTG92ZQogICAgTG92ZUxvdmVMb3ZlTG92ZQogICAgICBMb3ZlTG92ZUxvdmUKICAgICAgICAgIExvdmUK=" | base64 -d
Love Love
LoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLove
Love
注意:base64 -d == 从 base-64 转换为文件的原始内容。
对于较小的字符串,您可以先gzipheart 文件,然后通过base64 运行*gz 文件,例如:
$ gzip heart
=> generates file heart.gz
$ base64 heart.gz
H4sICHSiC14AA2hlYXJ0AFNQUPDJL0tVgAMQjwtCoWMubIJkSuCwAeYCDEFUYS409wIAcgvdzcYAAAA=
然后要返回图像,我们必须反向运行这些步骤:
echo "H4sICHSiC14AA2hlYXJ0AFNQUPDJL0tVgAMQjwtCoWMubIJkSuCwAeYCDEFUYS409wIAcgvdzcYAAAA=" | base64 -d | gunzip
Love Love
LoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLoveLove
LoveLoveLoveLoveLove
LoveLoveLoveLove
LoveLoveLove
Love