導航:首頁 > 操作系統 > 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二進制轉換相關的資料

熱點內容
天河三號演算法 瀏覽:924
php隊列教程 瀏覽:632
洪水命令 瀏覽:529
安卓怎麼弄成蘋果在線 瀏覽:435
谷歌web伺服器地址 瀏覽:898
安卓鎖屏圖片如何刪除 瀏覽:719
python3多進程編程 瀏覽:714
證明代碼是程序員寫的 瀏覽:397
演算法錯誤發現辦法 瀏覽:410
河南省醫院掛號是哪個app 瀏覽:629
冬日戀歌哪個APP能看 瀏覽:673
委內瑞拉加密貨 瀏覽:10
程序員寫日記哪個軟體好 瀏覽:108
加密機操作手冊 瀏覽:860
dos命令自動關閉 瀏覽:328
心田花開app在哪裡評價 瀏覽:449
求索記錄頻道哪個app可以看 瀏覽:730
金梅瓶pdf下載 瀏覽:985
機器軟體用什麼編程 瀏覽:845
java虛擬機指令 瀏覽:671