■ASCII⇒10進⇒16進変換
10進⇒16進⇒ASCII変換
http://d.hatena.ne.jp/labunix/20130106
■例えば、以下のような変換をしたいとき。。。
$ echo -e "Char\tDecimal\tHex"; \
echo "Hello World" | \
sed s/"."/"&\n"/g | \
for Ch in `xargs -0`;do \
echo -n "$Ch"; \
echo $(printf "%3d" \"$Ch) | \
awk '{printf "\t%3d\t0x%x\n",$1,$1}'; \
done
Char Decimal Hex
H 72 0x48
e 101 0x65
l 108 0x6c
l 108 0x6c
o 111 0x6f
W 87 0x57
o 111 0x6f
r 114 0x72
l 108 0x6c
d 100 0x64
■もう少し使いやすい16進で書くと。。。
$ echo "Hello World" | \
sed s/"."/"&\n"/g | \
for Ch in `xargs`;do \
echo $(printf "%3d" \"$Ch) | \
awk '{printf "%x",$1}'; \
done;echo
48656c6c6f576f726c64
■コマンドにしてしまおう。
$ cat myscripts/hexer.sh
if [ "$#" -lt 1 ];then
echo "Usage $0 Word" >&2
exit 1
fi
echo "$@" | sed s/"."/"&\n"/g | \
for Ch in `xargs`;do \
echo $(printf "%3d" \"$Ch) | \
awk '{printf "%x",$1}'; \
done;echo
$ chmod +x myscripts/hexer.sh
$ ./myscripts/hexer.sh
Usage ./myscripts/hexer.sh Word
$ ./myscripts/hexer.sh "test"
74657374
$ ./myscripts/hexer.sh Good Morning
476f6f644d6f726e696e67
■スペースとアスタリスクは除いているのはシェルの解釈を避ける為です。
エスケープ方法が見つからなかっただけですが、大抵の場合は以下で充分かと。。。
$ echo -e "Char\tDecimal\tHex"; \
for n in `seq 32 126`;do \
echo "$n" | awk '{printf "0x%x\t%c\t%3d\n",$1,$1,$1}'; \
done | \
awk '{print $2}' | \
grep -v "32\|\*" | \
for Ch in `xargs -0`;do \
echo -n "$Ch"; \
echo $(printf "%3d" \"$Ch) | awk '{printf "\t%3d\t0x%x\n",$1,$1}'; \
done
Char Decimal Hex
! 33 0x21
" 34 0x22
# 35 0x23
$ 36 0x24
% 37 0x25
& 38 0x26
' 39 0x27
( 40 0x28
) 41 0x29
+ 43 0x2b
, 44 0x2c
- 45 0x2d
. 46 0x2e
/ 47 0x2f
0 48 0x30
1 49 0x31
2 50 0x32
3 51 0x33
4 52 0x34
5 53 0x35
6 54 0x36
7 55 0x37
8 56 0x38
9 57 0x39
: 58 0x3a
; 59 0x3b
< 60 0x3c
= 61 0x3d
> 62 0x3e
? 63 0x3f
@ 64 0x40
A 65 0x41
B 66 0x42
C 67 0x43
D 68 0x44
E 69 0x45
F 70 0x46
G 71 0x47
H 72 0x48
I 73 0x49
J 74 0x4a
K 75 0x4b
L 76 0x4c
M 77 0x4d
N 78 0x4e
O 79 0x4f
P 80 0x50
Q 81 0x51
R 82 0x52
S 83 0x53
T 84 0x54
U 85 0x55
V 86 0x56
W 87 0x57
X 88 0x58
Y 89 0x59
Z 90 0x5a
[ 91 0x5b
\ 92 0x5c
] 93 0x5d
^ 94 0x5e
_ 95 0x5f
` 96 0x60
a 97 0x61
b 98 0x62
c 99 0x63
d 100 0x64
e 101 0x65
f 102 0x66
g 103 0x67
h 104 0x68
i 105 0x69
j 106 0x6a
k 107 0x6b
l 108 0x6c
m 109 0x6d
n 110 0x6e
o 111 0x6f
p 112 0x70
q 113 0x71
r 114 0x72
s 115 0x73
t 116 0x74
u 117 0x75
v 118 0x76
w 119 0x77
x 120 0x78
y 121 0x79
z 122 0x7a
{ 123 0x7b
| 124 0x7c
} 125 0x7d
~ 126 0x7e