我需要将二进制文件转换为文本格式。几年前,我使用过 uuencode/uudecode,这很容易:
uuencode file.xls > file.txt
# Delete file.xls
# Do whatever with file.txt
# Now I need file.xls back
uudecode file.txt > file.xls
但是 uuencode/uudecode 不在我的系统上,当我环顾四周时,yum/rpm 过程很丑陋 - 这给了我一个线索,也许没有人再使用它了,而是有更现代的东西来做这件事。
我查看了 xxd 和 hexdump,但无法让它们执行此操作。可能只是愚蠢的用户问题。
在 Linux 上我可以使用什么来执行此操作?希望它是本机安装中的东西,这样如果可能的话我就不需要 yum/rpm 了。
只是为了你自己的理解,我现在特别想做的是对 *.xls 文件进行源代码控制,但公司工具不允许 *.xls 进入。我通常尊重这个限制,但在我的上下文中,*.xls 是我的代码的配置表,所以它是逻辑上就像源代码,但企业 SVN 触发器是物理的 - 如果它是 *.xls,它会被拒绝,所以我会对其进行编码并对 *.txt 文件进行源代码控制。
谢谢!
答案1
知道了:
xxd -p excel.xlsx > excel.xxdp
xxd -p -r excel.xxdp > recover.xlsx
diff excel.xlsx recover.xlsx
答案2
答案3
有一个 Python 程序可用于实现此目的。
$ python hexdump.py abc.tar > abc.ascii
$ python hexdump.py -r abc.ascii > def.tar
$ md5sum abc.tar def.tar abc.ascii
e4733a492d5ae78d9e163a9ec808b6ae abc.tar
e4733a492d5ae78d9e163a9ec808b6ae def.tar
b56a0ed4d794c0cf6084ddb9e7c862f8 abc.ascii
$ ls -pla abc*
-rw-r--r--. 1 60001 60001 61514 Mar 13 16:08 abc.ascii
-rw-r--r--. 1 60001 60001 12775 Mar 13 15:33 abc.tar