Bash指令碼中進位制轉換
修改指令碼時,想直接用10進位制轉換為16進位制的方法,在網上搜了搜,結果是找到了,可惜所用系統中沒有對應的指令,還是用不成,最後就用了一個比較笨一點的方法。
既然有需要,就把搜到感覺有用的進位制轉換函式或指令都貼在這裡,便於以後應用。
shell可以在不呼叫第3方命令,表示不同進位制資料。這裡總結以下表示方法。shell 指令碼預設數值是由10 進位制數處理,除非這個數字某種特殊的標記法或字首開頭. 才可以表示其它進位制型別數值。如:以 0 開頭就是 8 進位制.以0x 開頭就是16 進位制數.使用 BASE#NUMBER 這種形式可以表示其它進位制.BASE值:2-64.
使用方法:
- 其它進位制轉為10進位制
八進位制轉十進位制:
[[email protected] ~]$ ((num=0123));
[[email protected] ~]$ echo $num;
83[[email protected] ~]$ ((num=8#123));
[[email protected] ~]$ echo $num;
83((表示式)),(())裡面可以是任意資料表示式。如果前面加入:”$”可以讀取計算結果。
十六進位制轉十進位制:
[[email protected] ~]$ ((num=0xff));
[[email protected]~]$ echo $num;
255
[[email protected] ~]$ ((num=16#ff));
[[email protected] ~]$ echo $num;
255base-32轉十進位制:
[[email protected] ~]$ ((num=32#ffff));
[[email protected] ~]$ echo $num;
507375base64轉十進位制:
[[email protected] ~]$ ((num=64#abc_));
[[email protected]~]$ echo $num;
2667327二進位制轉十進位制
[[email protected] ~]$ ((num=2#11111111));
[[email protected] ~]$ echo $num;
255
- 十進位制轉為其它進位制
十進位制轉八進位制
這裡使用到:bc外部命令完成。bc命令格式轉換為:echo "obase=進位制;值"|bc
[[email protected] ~]$ echo "obase=8;01234567"|bc
4553207二進位制,十六進位制,base64轉換為 十進位制也相同方法。
[[email protected] ~]$ echo "obase=64;123456"|bc
30 09 00
shell,內建各種進製表示方法非常簡單。記得base#number 即可。這裡記得賦值時候用(())符號。不能直接用=號了。=號沒有值型別。預設將後面變成字串了。如:
[[email protected] ~]$ num=0123;
[[email protected] ~]$ echo $num;
01230開頭已經失去了意義了。
可以通過定義符:let達到(()) 運算效果。
[[email protected] ~]$ let num=0123;
[[email protected] ~]$ echo $num;
83%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Example 12-46 將10進位制數字轉換為16進位制數字
################################Start Script#######################################
1 #!/bin/bash
2 # hexconvert.sh: 將10進位制數字轉換為16進位制數字
3
4 E_NOARGS=65 # 缺命令列引數錯誤.
5 BASE=16 # 16進位制.
6
7 if [ -z "$1" ]
8 then
9 echo "Usage: $0 number"
10 exit $E_NOARGS
11 # 需要一個命令列引數.
12 fi
13 # 練習: 新增命令列引數檢查.
14
15
16 hexcvt ()
17 {
18 if [ -z "$1" ]
19 then
20 echo 0
21 return # 如果沒有引數傳遞到這個函式中就 "return" 0.
22 fi
23
24 echo ""$1" "$BASE" o p" | dc
25 # "o" 設定輸出的基數(數制).
26 # "p" 列印棧頂.
27 # 察看 dc 的 man 頁來了解其他的選項.
28 return
29 }
30
31 hexcvt "$1"
32
33 exit 0
相關推薦
Bash指令碼中進位制轉換
修改指令碼時,想直接用10進位制轉換為16進位制的方法,在網上搜了搜,結果是找到了,可惜所用系統中沒有對應的指令,還是用不成,最後就用了一個比較笨一點的方法。 既然有需要,就把搜到感覺有用的進位制轉換函式或指令都貼在這裡,便於以後應用。 shell可以在不呼叫第3方命
linux中進位制轉換
方式一:使用$[]或$(()) 格式為:$[base#number]或$((base#number)),其中base為進位制,number為對應進位制數。 這種方式輸入2進位制、16進位制等,但只能輸出為10進位制,如下: [email protected] ~ # echo
python中進位制轉換及IP地址轉換
各進位制之間轉換: 1 # 轉二進位制用bin(int(x,n)) #用幾進位制轉換n就是幾 2 # 轉八進位制用oct(int(x,n)) #x位置放現有進位制字串 3 # 轉十進位制用int(x,n) 4 # 轉十六進位制用hex(int(x,n)) 十進位制轉二
常見物件_Integer中進位制轉換的操作
package cn.itcast_04; /* * 常用的基本進位制轉換: * public static String toBinaryString(int i) * public static String toOctalString(int i)
C++中的進位制轉換
C/C++中的三種進位制 1.十進位制:dec 2.八進位制:oct 3.十六進位制:hex 程式如下: #include "iostream" using namespace std; int main() { int a,b,c; a = 10;//十
java中的進位制轉換
返回一個整數引數是一個無符號整數的字串表示基礎2。 返回一個整數引數是一個無符號整數的字串表示基地16。 返回一個整數引數是一個無符號整數的字串表示基地8。 十進位制轉二進位制,十六進位制,八
中石油新生第三次訓練賽 C題進位制轉換(奇葩解)
題目描述 樂樂正在學進位制轉換,但他老是搞不清楚到底自己是否做對,請你編一程式實現兩種不同進位制之間的資料轉換,幫他檢驗。 輸入 共有三行,第一行是一個正整數,表示需要轉換的數的進位制n(2≤n≤16),第二行是一個n進位制數,若n>10則用大寫字母A~F表示數碼10~15
java中的進位制轉換及轉換函式
進位制轉換原理 十進位制 轉 二進位制: 原理: 對十進位制數進行除 2 運算取餘。 6 --> 110 二進位制 轉 十進位制 原理: 二進位制 乘以 2 的n次冪 的過程 110 ->0*20 + 1*21 + 1 * 22
android開發中遇到的進位制轉換,16進位制資料流轉和字串的相互轉換
最近開發的程式是利用無線網路,收發資料,其中,接收和傳送的格式是16進位制位元組陣列 byte[],而顯示到介面中則不可能把一堆的位元組流顯示出來。因此,需要進行一下轉換。 直接說轉換的演算法吧 一、16進位制位元組陣列轉換成字串 核心的語句就一句getSt
python 中的進位制轉換 整理
工作中經常需要用到進位制轉換, 一直對這方面有一些模糊, 終於有時間把這方面整理一下了. 常用的進位制: 二進位制bin(), 八進位制oct(), 十進位制int(), 十六進位制hex() 下面我採用python3.6中的原始碼進行解釋, 來自python中的builtins.py
java中進位制的轉換,Byte與16進位制的轉換
字串轉換成十六進位制字串方法1: /** * 字串轉換成十六進位制字串 */ public static String str2HexStr(String str) { char[] chars = "0123456789ABCDEF".toChar
js中parseInt與parseFloat在進位制轉換的區別
專案中需要轉換一個16進位制數0x00000000000000000000000000000000000000001c0bed842bda49e0fc480000,因為考慮到可能是一個小數,所以使用了parseFloat()方法,但是實際運用頻繁報錯. 深究原
Java 中 進位制之間的轉換
進位制轉換的主要異常 Exception in thread "main" java.lang.NumberFormatException: For input string: "G8" at java.lang.NumberFormatException.forI
C中16進位制轉換成10進位制函式
第一種情況:16進制中不含字母(a,b,c,d,e,f) long HexToDec(int nSource) { long nResult=0; int k=16;
java 中十六進位制轉換為字串,java GSON-JSON解析。
private void ceshi() { String data = "600000343555031374432354230307B22616464496E666F223A7B227265737" + "56C745F636F64652
Python內建進位制轉換函式(實現16進位制和ASCII轉換)
在進行wireshark抓包時你會發現底端視窗報文內容左邊是十六進位制數字,右邊是每兩個十六進位制轉換的ASCII字元,這裡使用Python程式碼實現一個十六進位制和ASCII的轉換方法。 hex() 轉換一個整數物件為十六進位制的字串 >>> hex(16) '0x10' >&
[程式設計題]進位制轉換
寫出一個程式,接受一個十六進位制的數值字串,輸出該數值的十進位制字串。(多組同時輸入 ) 輸入描述: 輸入一個十六進位制的數值字串。 輸出描述: 輸出該數值的十進位制字串。 輸入例子: 0xA 輸出例子: 10 package HWResear
負進位制轉換
題目描述 以前我們做的進位制轉換大家都忽略了一點,就是進位制一定是正整數;今天這道進位制轉換就坑爹的選擇了,額,負整數來做進位制。 輸入 輸入由若干行組成,每行有兩個整數n(-32765<=n<=32767)和R(-16<=R<=-2)。輸入的最
進位制轉換(c語言)
#include <stdio.h> #include <stdlib.h> void change(int n) { if (n == 0) return; else { // change(n / 8);
進位制轉換以及原補反碼的轉換
進位制轉換以及原補反碼的轉換 進位制轉換 十進位制轉二進位制 十進位制數除2取餘法,即十進位制數除2,餘數為權位上的數,得到的商值繼續除2,依此步驟繼續向下運算直到商為0為止。 二進位制轉十進位制 把二進位制數按權展開、相加即得十進位制數。 二進位制與八進位制