导航:首页 > 操作系统 > linux二进制转换

linux二进制转换

发布时间:2022-09-08 15:15:40

① 怎样使用vi编辑器修改linux中的二进制文件

使用过Linux的人基本上都对vi有些许了解,这是Linux各种发行版都会有的标准文本编辑器,功能很强大。他不但能编辑正常的ASCII/ASIN文本文档,也可以编辑二进制文档的,这里我们就以Fedora为例来看一下如何使用vi编辑二进制文档。
工具/原料

安装了Linux的计算机/笔记本电脑
vi编辑器和需要编辑的二进制文件
方法/步骤

在Fedora桌面打开“Applications”-“System Tools”-“Terminal”打开命令终端,为vi编辑做准备。

在终端切换到要编辑的二进制文件目录,然后输入“vi -b test.bin”,其中“test.bin”是我要编辑的二进制文件。当然也可以直接指定vi要打开编辑的文件路径。“-b”参数,就是告诉vi编辑器,我是在用二进制模式打开文件的。

打开文件之后,我们是很难看到文件实际内容的,因为是二进制的,文件不是可读的,因此也不能直接编辑和修改的。这时,我们可以使用命令“:%xxd”强制将其转化为可读的十六进制显示,就可以使用正常的vi命令对文件进行编辑了。

转化之后的文件内容以十六进制表示,左侧是文件偏移值。我们计划将文件编译00000010开始的4个十六进制字符“FFFFFFFF”修改一下。

使用正常的vi编辑器命令将十六进制字符“FFFFFFFF”修改为“88888888”,修改完成后,使用esc命令返回到vi的命令模式,然后使用命令“:%xxd -r”就可以将其重新转化为二进制模式了。
步骤阅读
6
转化完成后,就可以看到,二进制显示的内容与没修改之前的内容已经有所差异。这时使用命令“:wq”保存退出就可以了。

② linux 系统下 生成的二进制文件总是乱码是什么原因

linux下经常遇到的编码问题
如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-8。
查看编码的方法
方法一:file
filename
方法二:在Vim中可以直接查看文件编码
:set
fileencoding
如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在
~/.vimrc
文件中添加以下内容:
set
encoding=utf-8
fileencodings=ucs-bom,utf-8,cp936
这样,就可以让vim自动识别文件编码(可以自动识别UTF-8或者GBK编码的文件),其实就是依照fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用latin-1(ASCII)编码打开
文件编码转换
多平台方法:
iconv
提供标准的程序和API来进行编码转换;
convert_encoding.py
基于Python的文本文件转换工具;
decodeh.py
提供算法和模块来谈测字符的编码;
linux下文件编码转换:
方法一:
在Vim中直接进行转换文件编码,比如将一个文件转换成utf-8格式
:set
fileencoding=utf-8
或者
11)设置文件集合,即要对哪些文件进行操作,可以使用通配符,比如我通常是对
C/C++
源程序进行编码转换
:args
*.h
*.cpp
2)给出要在每个文件上执行的命令,这里是转换编码:
:argdo
set
fenc=utf-8
|
update
方法二:
iconv
转换
5.案例:
假如说我们将windows下的一个UTF-8的文件传到linux环境下,linux环境下的系统编码是GB18030,我们cat的时候就会出现乱码,这个时候就应该想到转码了,下面我们来进行试验:
我们将windows下一个名为UTF-8.sh的文件传到linux系统中,其中UTF-8.sh的内容如下:
我是中文编码UTF-8模式~
而linux系统的系统语言设置为:
[root@sor-sys
zy]#
cat
/etc/sysconfig/i18n
LANG=zh_CN.GB18030
SYSFONT="latarcyrheb-sun16"
这个时候查看一下文件的内容及编码:
[root@sor-sys
zy]#
file
UTF-8.sh
UTF-8.sh:
UTF-8
Unicode
text,
with
no
line
terminators
[root@sor-sys
zy]#
cat
UTF-8.sh
锘挎垜鏄?腑鏂囩紪镰乁TF-8妯″纺~[root@sor-sys
zy]#
[root@sor-sys
zy]#
这个时候我们就需要转换编码了,记得使用iconv
[root@sor-sys
zy]#
iconv
-f
UTF-8
-t
GB18030
UTF-8.sh
-o
GB18030.sh
[root@sor-sys
zy]#
cat
GB18030.sh
??我是中文编码UTF-8模式~[root@sor-sys
zy]#
[root@sor-sys
zy]#
file
GB18030.sh
GB18030.sh:
Non-ISO
extended-ASCII
text,
with
no
line
terminators
[root@sor-sys
zy]#
convmv就是更改文件名编码方式的一个工具。
比如
sudo
convmv
-f
gbk
-t
utf-8
-r
–notest
/home
就是将/home目录下原来文件名是gbk编码方式的全部改为utf-8格式的。这里
-f
后面为原来的编码方式,-t
后面是要更改为的编码方式,
-r
表示这个目录下面的所有文件,
–notest
表示马上执行,而不是仅仅测试而已。另外这命令好像要root才能执行,因此要加上
sudo。

③ linux下没有itoa函数,sprintf又不能转换成二进制,那么如何写一个小函数,把十进制转换成二进制

连续除以2,让余数倒排即可,我写了个输出成int的,只不过这个int是二进制而已,你可以参考

int to2(int n)
{
int r=0;
int shang,yushu;
shang=n;
while(shang!=0)
{
yushu=shang%2;
r=r*10+yushu;
shang=shang/2;
}
return r;
}

④ 在LINUX 系统下如何将二进制转换成ASCII码

在线转换器http://www.ab126.com/goju/1711.html

hexmp命令,可以将文件(不光是二进制文件)按各种格式显示,当然包括ASCII。

你可以用这个命令再配合‘>’输入到文件里,就起到转换的效果了。

⑤ linux 下有个hexmp函数,把二进制换成16进制显示,有没有功能相反的函数

vim 自带的 xxd 就可以完成转十六进制和反转的功能,反转是只要把十六进制数按它转出的格式排好(右侧的显示符号可以不管),就可以转换。如果不在乎转完的十六进制格式,那用 xxd -ps 更方便。

⑥ 二进制,八进制,十进制,十六进制之间怎么转换

1.什么是二进制

二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用“开”来表示1,“关”来表示0。

.信息的存储单位

位(Bit):度量数据的最小单位

字节(Byte):最常用的基本单位,一个字节有8位

b7b6b5b4b3b2b1b0

1 0 0 1 0 1 0 1 =27+24+22+20=149

K字节 1k=1024 byte

M(兆)字节 1M=1024K

G(吉)字节 1G=1024M

T(太)字节 1T=1024G

2.十进制转换

1234[10进制]0 1 2 3 4 5 6 7 8 9 0当数位上的值超过9就要进1

1000+200+30+4=1*103+2*102+3*101+4*100=1234

1011[2进制]0 1当数位上的值超过1就要进1

1*23+0*22+1*21+1*20=8+0+2+1=11

1011[8进制]0 1 2 3 4 5 6 7当数位上的值超过7就要进1

1*83+1*81+1*80=512+8+1=521

1011[16进制]0 1 2 3 4 5 6 7 8 9 A B C D E F当数位上的值超过15就要进1

1*163+1*161+1*160=4096+16+1=4113

3.二进制转换

首先来看十进制到二进制:除2取余数 最后把余数倒过来100101

比如:十进制数37

所以转换成的二进制数字为:100101

再来八进制到二进制:一个八进制的位拆分成一个三位的二进制数

比如:[八进制]616

6拆分成110

1拆分成 001

6拆分成 110

所以转换成的二进制数字为:110001110

再来十六进制到二进制:一个八进制的位拆分成一个四位的二进制数

比如:[十六进制]616

6拆分成 0110

1拆分成 0001

6拆分成 0110

所以转换成的二进制数字为:11000010110

4.八进制转换

十进制到八进制:除8取余数 最后把余数倒过来

同时我们也可以先将十进制转换成二进制,然后将二进制又转换成八进制

比如:2456 转化成八进制数字:4630

2456/8=307,余0;
307/8=38,余3;
38/8=4,余6;
4/8=0,余4。
将所有余数倒序相连,得到结果:4630。
因此十进制的2456转换为八进制结果为4630。

二进制到八进制转换 7=4+2+1 111 八进制最大的数字是7转换成二进制刚好是111,占3个位

每三个二进制数为一组,转成一个八进制数位,如果二进制高位不足3位时,用零填补。

比如:10011011

010 011 011

2 3 3

因此二进制的10011011转换为八进制结果为233。

5. 十六进制到八进制

我们可以先把十六进制的数字转换成二进制,在从二进制转换成八进制例如:

3BC24
分别对应到二进制就是:
3 0011
B 1011
C 1100
4 0100

连起来就是:
0011 1011 1100 0100

再按照每三个一组分组:
0 011 101 111 000 100

0__3__5__7__0__4
所以8进制就是35704

6.十六进制转换

十进制到十六进制:除16倒着取余数

同时我们也可以先将十进制转换成二进制,然后将二进制又转换成十六进制

比如说:1610转换成十六进制

直接转16进制:
1610/16=100……10(A);
100 /16= 6……4;
6 /16= 0……6;

故:1610(10)=64A(16).

二进制到十六进制15=8+4+2+1 1111 十六进制最大数字是F,即15转换成二进制1111,刚好占4个位

每四个二进制数为一组,转成一个十六进制数位,如果二进制高位不足3位时,用零填补。

比如:1110011011

0011 1001 1011

3 9 B

因此二进制的1110011011转换为十六进制39B

八进制到十六进制

我们可以先把八进制的数字转换成二进制,在从二进制转换成十六进制

八进制的:1234567

转换为二进制是每个数字转换为三位二进制:001 010 011 100 101 110 111

然后把这些数字从右边开始进行按四位分组:0 0101 0011 1001 0111 0111

然后从右边每四位组依次对应一个16进制数:053977

7.各种进制的用途

说了这么多,这些进制都有些什么用了,大家一起讨论下吧!!!

10进制,当然是便于我们人类来使用,我们从小的习惯就是使用十进制,这个毋庸置疑。

2进制,是供计算机使用的,1,0代表开和关,有和无,机器只认识2进制。

16进制,内存地址空间是用16进制的数据表示, 如0x8049324。

编程中,我们常用的还是10进制。

比如:int a = 100,b = 99;

不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决 问题。但二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:

0000 0000 0000 0000 0110 0100

面对这么长的数进行思考或操作,没有人会喜欢。因此,用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。

1.用于计算机领域的一种重要的数制

2.对计算机理论的描述,计算机硬件电路的设计都是很有益的。比如逻辑电路设计中,既要考虑功能的完备,还要考虑用尽可能少的硬件,十六进制就能起到一些理论分析的作用。比如四位二进制电路,最多就是十六种状态,也就是一种十六进制形式,只有这十六种状态都被用上了或者尽可能多的被用上,硬件资源才发挥了尽可能大的作用。

3.十六进制更简短,因为换算的时候一位16进制数可以顶4位2进制数。

8进制,一般有什么用,查了下资料,还真不知道?有知道的大神告诉我吧。

如果你用过linux你可能见过这样表示一个文件的权限:0777、0666等等
可能有的这样解释:具有读权限加1,具有写权限加2,具有执行权限加4,最后的和就是一个角色所具有的权限。而linux有三种角色:属主、属组、其他用户,所以用0777、0666之类的表示。
如果用二进制来看的话,linux用3个bit来表示权限,如果具有某个权限就把那位置1.比如只具有读权限就是100,只具有写权限就是010,具有读写权限就是110,具有读写执行权限就是111。

⑦ Linux下有什么好用的二进制文件编辑器

一、在Linux下查看二进制文件的软件:
xxd (2进制)
hexmp (16进制)
二、编辑:
1、biew
2、hexedit
3、vim
Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读
取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,
其它的就跟原来那个一模一样。
要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:
vim -b datafile
这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'
设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。
二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运
行出问题。用 "R" 命令进入替换模式。
文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:
:set display=uhex
另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 字符上时,
该命令的输出看起来就像这样:
27, Hex 1b, Octal 033
文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:
:set nowrap
字 节 位 置
要发现你在文件中的当前字节位置,请用这个命令:
g CTRL-G
其输出十分冗长:
Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'
选项导致换行符字节不同的影响。
要移到文件中某个指定的字节,请用 "go" 命令。例如,要移到字节 2345:
2345go
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:
vim -b datafile
现在用 xxd 把这个文件转换成十六进制:
:%!xxd
文本看起来像这样:
0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
最后,用下面的命令把它转换回来:
:%!xxd -r
只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。
楼主如果对Linux感兴趣,想学习更多Linux操作知识,可以网络《Linux就该这么学》,相信会有帮助的。

⑧ linux 怎么看 文件二进制

一、在Linux下查看二进制文件的软件:

xxd (2进制)

hexmp (16进制)

二、编辑:

1、biew

2、hexedit

3、vim

Vim 来编辑二进制文件。Vim 本非为此而设计的,因而有若干局限。但你能读
取一个文件,改动一个字符,然后把它存盘。结果是你的文件就只有那一个字符给改了,
其它的就跟原来那个一模一样。
要保证 Vim 别把它那些聪明的窍门用错地方,启动 Vim 时加上 "-b" 参数:
vim -b datafile
这个参数设定了 'binary' 选项。其作用是排除所有的意外副作用。例如,'textwidth'
设为零,免得文本行给擅自排版了。并且,文件一律以 Unix 文件格式读取。
二进制模式可以用来修改某程序的消息报文。小心别插入或删除任何字符,那会让程序运
行出问题。用 "R" 命令进入替换模式。
文件里的很多字符都是不可显示的。用 Hex 格式来显示它们的值:
:set display=uhex
另外,也可以用命令 "ga" 来显示光标下的字符值。当光标位于一个 字符上时,
该命令的输出看起来就像这样:
27, Hex 1b, Octal 033
文件中也许没那么多换行符。你可以关闭 'wrap' 选项来获得总览的效果:
:set nowrap
字 节 位 置
要发现你在文件中的当前字节位置,请用这个命令:
g CTRL-G
其输出十分冗长:
Col 9-16 of 9-16; Line 277 of 330; Word 1806 of 2058; Byte 10580 of 12206
最后两个数字就是文件中的当前字节位置和文件字节总数。这已经考虑了 'fileformat'
选项导致换行符字节不同的影响。
要移到文件中某个指定的字节,请用 "Go" 命令。例如,要移到字节 2345:
2345go
使 用 XXD
一个真正的二进制编辑器用两种方式来显示文本: 二进制和十六进制格式。你可以在 Vim
里通过转换程序 "xxd" 来达到这效果。该程序是随 Vim 一起发布的。
首先以二进制方式编辑这个文件:
vim -b datafile
现在用 xxd 把这个文件转换成十六进制:
:%!xxd
文本看起来像这样:
0000000: 1f8b 0808 39d7 173b 0203 7474 002b 4e49 ....9..;..tt.+NI
0000010: 4b2c 8660 eb9c ecac c462 eb94 345e 2e30 K,.`.....b..4^.0
0000020: 373b 2731 0b22 0ca6 c1a2 d669 1035 39d9 7;'1.".....i.59.
现在你可以随心所欲地阅读和编辑这些文本了。 Vim 把这些信息当作普通文本来对待。
修改了十六进制部分并不导致可显示字符部分的改变,反之亦然。
最后,用下面的命令把它转换回来:
:%!xxd -r
只有十六进制部分的修改才会被采用。右边可显示文本部分的修改忽略不计。

⑨ linux,xrw转换为二进制

那个是不能转化成二进制,转化成二进制是有是有是有是有一定的理由的

⑩ 在linux下怎么将二进制文件转换为文本文件

Unix文件是不区分二进制和文本格式的,不存在什么“二进制和文本互相转化”问题。对文件的处理,完全在于应用程序怎么去处理它。例如,编译出来的a.out是ELF格式的二进制文件,用shell就是直接加载并运行该程序,但是如果用file a.out,则是从a.out中提取信息来判断a.out文件格式。

如果是在编程中,那更不用区分,FILE *fp = fopen(yourfilename, "r")和fopen(yourfilename, "rb")是完全一样的。

阅读全文

与linux二进制转换相关的资料

热点内容
php怎么跳转到电脑 浏览:413
如何在电脑上创建新网络连接服务器 浏览:61
c语言编译之后如何运行 浏览:566
mfc多线程编程视频 浏览:410
c编译的中文怎么写 浏览:91
单片机连接蜂鸣器电路 浏览:844
程序员买房前后对比照 浏览:988
cmdjava中文乱码 浏览:947
窗口app哪个好 浏览:731
xzforandroid 浏览:577
程序员那么可爱歌曲完整版 浏览:906
为什么购买pdf 浏览:45
操作系统代码编译 浏览:483
程序员东北大学 浏览:426
编译忽略空字符 浏览:118
多店铺阿里云服务器教程 浏览:379
单片机求初值 浏览:421
安卓机如何在电脑备份图片 浏览:927
ca证书加密机价格 浏览:798
天干地支年份算法 浏览:798