■ASCII文字⇒16進数、16進数⇒10進数、16進数⇒ASCII文字変換
10進⇒16進⇒ASCII変換
http://d.hatena.ne.jp/labunix/20130106
16進⇒10進⇒ASCII変換
http://d.hatena.ne.jp/labunix/20130108
ASCII⇒10進⇒16進変換
http://d.hatena.ne.jp/labunix/20130107
■何の入力チェックもしていないので、かなり雑なmyhexを作成。 サンプル出力以外に記号は扱えない。2バイト文字とかは今回はスルー。 $ cat myhex #!/bin/bash function usage(){ echo "Usage: echo \"HelloWorld\" | $(basename $0) [-e|-d|-h]" echo "-x : encode from char to hex" echo "-c : decode from hex to char" echo "-s : sample dec hex char" echo "-h : help" } if [ $# -eq 0 ];then usage exit 1 fi if [ $# -lt 1 ];then usage exit 1 fi while getopts "xcdsh" OPT;do case $OPT in x) awk '{for(i=1;i<=length($0);++i)\ {print "echo $(printf \042%02x\042 \134\042"substr($0,i,1)")"}}' | sh | \ tr '\n' ' ' | sed -e 's/00/20/g';echo ;; c) tr -d ' ' | awk '{for(i=1;i<=length($0);i+=2)\ {printf "%c",strtonum("0x"substr($0,i,2))}}END{printf "\n"}' ;; d) tr -d ' ' | awk '{for(i=1;i<=length($0);i+=2)\ {printf "%d ",strtonum("0x"substr($0,i,2))}}END{printf "\n"}' ;; s) seq 32 126 | awk 'BEGIN{print "dec hex char"}{printf "%03d %02x %c\n",$1,$1,$1}' ;; h) usage ;; esac done ■まずは使い方。 $ ./myhex Usage: echo "HelloWorld" | myhex [-e|-d|-h] -x : encode from char to hex -c : decode from hex to char -s : sample dec hex char -h : help ■ASCII -> 16進数変換 $ echo "Hello World" | ./myhex -x 48 65 6c 6c 6f 20 57 6f 72 6c 64 ■16進数 -> ASCII変換 $ echo "Hello World" | ./myhex -x | ./myhex -c Hello World ■16進数 -> 10進数 $ echo "Hello World" | ./myhex -x | ./myhex -d 72 101 108 108 111 32 87 111 114 108 100 ■サンプルを使って確認 $ ./myhex -s | awk '$3 ~ /[A-z0-9]/ && length($3)==1 && $3 !~ /\[|\]|\\|\^|\_|`/{print $3}' | ./myhex -x 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 5a 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a $ ./myhex -s | awk '$3 ~ /[A-z0-9]/ && length($3)==1 && $3 !~ /\[|\]|\\|\^|\_|`/{print $3}' | ./myhex -x | ./myhex -d 48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 $ ./myhex -s | awk '$3 ~ /[A-z0-9]/ && length($3)==1 && $3 !~ /\[|\]|\\|\^|\_|`/{print $3}' | ./myhex -x | ./myhex -c 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ■サンプルとして一覧のおまけ。 $ ./myhex -s dec hex char 032 20 033 21 ! 034 22 " 035 23 # 036 24 $ 037 25 % 038 26 & 039 27 ' 040 28 ( 041 29 ) 042 2a * 043 2b + 044 2c , 045 2d - 046 2e . 047 2f / 048 30 0 049 31 1 050 32 2 051 33 3 052 34 4 053 35 5 054 36 6 055 37 7 056 38 8 057 39 9 058 3a : 059 3b ; 060 3c < 061 3d = 062 3e > 063 3f ? 064 40 @ 065 41 A 066 42 B 067 43 C 068 44 D 069 45 E 070 46 F 071 47 G 072 48 H 073 49 I 074 4a J 075 4b K 076 4c L 077 4d M 078 4e N 079 4f O 080 50 P 081 51 Q 082 52 R 083 53 S 084 54 T 085 55 U 086 56 V 087 57 W 088 58 X 089 59 Y 090 5a Z 091 5b [ 092 5c \ 093 5d ] 094 5e ^ 095 5f _ 096 60 ` 097 61 a 098 62 b 099 63 c 100 64 d 101 65 e 102 66 f 103 67 g 104 68 h 105 69 i 106 6a j 107 6b k 108 6c l 109 6d m 110 6e n 111 6f o 112 70 p 113 71 q 114 72 r 115 73 s 116 74 t 117 75 u 118 76 v 119 77 w 120 78 x 121 79 y 122 7a z 123 7b { 124 7c | 125 7d } 126 7e ~