2014-01-16 171 views
4

我有一個具有十進制值的字符串的要求。例如,'0 2930 0'。現在,當我把它轉換爲十六進制,它應該說'0000 0B72 0000'。我能夠將值轉換爲十六進制使用拆分和obc = 16與BC,我會得到答案'0 B72 0'。我需要的是獲得值「0000 0B72 0000」。任何人都可以幫助解釋這一點嗎?如何在shell腳本中將十進制值打印爲十六進制值

這裏是我做了什麼:

s1 ='2930' 
echo after converting it to hexadecimal 
s=`echo "obase=16; $s1" |bc` 
echo $s 

回答

5

使用printf用於獲取輸出所需的格式:

$ printf "%04x " 0 2930 0 
0000 0b72 0000 
+0

謝謝..它的工作......但現在,如果我想要做的字節翻轉...說現在字符串'00000b720000'我想輸出'0000 720b 0000'。請幫我解決 – user3202415

+0

@ user3202415你能不能發一個新的問題呢? – devnull

2

使用BC你有,

WANTED=456 ; echo "obase=16 ;$WANTED"|bc 

和倍數

WANTED="{456 ;12 ;32000}" ; echo "obase=16 ;$WANTED"|bc