比如一个文本文件.只包含一句话.hello world.
用od命令读出一串8进制数..
怎么才能从那串八进制数中还原出"hello world"的信息呢?
如果是图片用 od 读出呢??..怎么还原出一张图...
虽然这个好像没什么实用..还是想知道.
顺便问下..如果文件比较大..在终端用 od 命令的话,,不能完全显示(旁边的滚动条拉到最顶上时数据都满的)..那要怎样才能把这些数字保存下来呢?
三个问题..
一个文本文件用od命令读出后能不能还原?
-
- 帖子: 41
- 注册时间: 2009-05-29 22:48
-
- 帖子: 3182
- 注册时间: 2006-03-10 15:10
- 来自: xi'an China
- 联系:
Re: 一个文本文件用od命令读出后能不能还原?
当然可以还原,不过你需要了解的文本的编码问题。 你应该知道,即使是hello world ,也简单的几个英文字符,你保存成 utf8还是unicode格式,两个文件的二进制都是不同的
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: 一个文本文件用od命令读出后能不能还原?
重定向如果文件比较大..在终端用 od 命令的话,,不能完全显示(旁边的滚动条拉到最顶上时数据都满的)..那要怎样才能把这些数字保存下来呢?
代码: 全选
od file > destination_file
-
- 帖子: 41
- 注册时间: 2009-05-29 22:48
Re: 一个文本文件用od命令读出后能不能还原?
这个我知道.能说下具体怎么做吗?dbzhang800 写了:当然可以还原,不过你需要了解的文本的编码问题。 你应该知道,即使是hello world ,也简单的几个英文字符,你保存成 utf8还是unicode格式,两个文件的二进制都是不同的
有听说如果是PNG的二进制码的话,,要自己写个文件头,然后就能够还原..但是既然是读取一个文件,总不会给漏掉个文件头吧..
图片先不说..那个hello world的文本要怎样还原出来呢?假设编码是utf-8的话.
-
- 帖子: 3182
- 注册时间: 2006-03-10 15:10
- 来自: xi'an China
- 联系:
Re: 一个文本文件用od命令读出后能不能还原?
假定你的文本文件内容为(windows或linux下默认编码即可,没有文件头:比如windows下记事本另存为utf8时,就会添加)
运行
结果为(我的系统是小端的,大端的会与此不同):
od 的工作原理不多说了:
h 的 ASCII 码0x68, 二进制 0110 1000
e 的 ASCII 码0x65, 二进制 0110 0101
od 将其作为短整型用8进制显示出来,在小端机器上,该短整型 高8位为 0x65, 低8位为 0x68
于是该短整数:
为了容易看一点
也就是
至于怎么还原回去,不用多说了吧?
代码: 全选
hello world
代码: 全选
od filename.txt
代码: 全选
0000000 062550 066154 020157 067567 066162 000144
0000013
下面只简单看一下 062550 是怎么由“he”生成的od prints the offset in octal, and each group of file data is a C short int's worth of input printed as a single octal number.
h 的 ASCII 码0x68, 二进制 0110 1000
e 的 ASCII 码0x65, 二进制 0110 0101
od 将其作为短整型用8进制显示出来,在小端机器上,该短整型 高8位为 0x65, 低8位为 0x68
于是该短整数:
代码: 全选
0110 0101 0110 1000
代码: 全选
0 110 010 101 101 000
代码: 全选
0 6 2 5 5 0
-
- 帖子: 41
- 注册时间: 2009-05-29 22:48
Re: 一个文本文件用od命令读出后能不能还原?
我能再贪心的问下。。图片怎么还原吗?
这个好像比较复杂了。。
不然指个方向给我吧?
这个好像比较复杂了。。

不然指个方向给我吧?