blogの文字数制限を超えたので別ページ
ついでにgawk。10進数15桁+-でお願いします。
<d2b.awk>
BEGIN{
bin16[0] = "0000"
bin16[1] = "0001"
bin16[2] = "0010"
bin16[3] = "0011"
bin16[4] = "0100"
bin16[5] = "0101"
bin16[6] = "0110"
bin16[7] = "0111"
bin16[8] = "1000"
bin16[9] = "1001"
bin16[10] = "1010"
bin16[11] = "1011"
bin16[12] = "1100"
bin16[13] = "1101"
bin16[14] = "1110"
bin16[15] = "1111"
z = 0
for(x=0;x<16;x++){
for(y=0;y<16;y++){
bin256[z] = bin16[x] bin16[y]
z++
}
}
hex16[0] = "0"
hex16[1] = "1"
hex16[2] = "2"
hex16[3] = "3"
hex16[4] = "4"
hex16[5] = "5"
hex16[6] = "6"
hex16[7] = "7"
hex16[8] = "8"
hex16[9] = "9"
hex16[10] = "A"
hex16[11] = "B"
hex16[12] = "C"
hex16[13] = "D"
hex16[14] = "E"
hex16[15] = "F"
z = 0
for(x=0;x<16;x++){
for(y=0;y<16;y++){
hex256[z] = hex16[x] hex16[y]
z++
}
}
}
#MAIN START
{
a001 = dec2bin($0)
print $0 "\t" a001
}
#MAIN EXIT
func dec2bin(number){
aQuo32Quo16Quo8 = 0
aQuo32Quo16Mod8 = 0
aQuo32Mod16Quo8 = 0
aQuo32Mod16Mod8 = 0
aMod32Quo16Quo8 = 0
aMod32Quo16Mod8 = 0
aMod32Mod16Quo8 = 0
aMod32Mod16Mod8 = 0
flg_sign = 0
if(number<0){
number = number * -1
flg_sign = 1
}
aQuo32 = int(number / 2^32)
aQuo32Quo16 = int(aQuo32 / 2^16)
aQuo32Quo16Quo8 = int(aQuo32Quo16 / 2^8)
aQuo32Quo16Mod8 = aQuo32Quo16 % 2^8
aQuo32Mod16 = aQuo32 - (aQuo32Quo16 * 2^16)
aQuo32Mod16Quo8 = int(aQuo32Mod16 / 2^8)
aQuo32Mod16Mod8 = aQuo32Mod16 % 2^8
aMod32 = number - (aQuo32 * 2^32)
aMod32Quo16 = int(aMod32 / 2^16)
aMod32Quo16Quo8 = int(aMod32Quo16 / 2^8)
aMod32Quo16Mod8 = aMod32Quo16 % 2^8
aMod32Mod16 = aMod32 - (aMod32Quo16 * 2^16)
aMod32Mod16Quo8 = int(aMod32Mod16 / 2^8)
aMod32Mod16Mod8 = aMod32Mod16 % 2^8
if(flg_sign == 1){
j= 0
for(j=0;j<8;j++){
minus[j] = 0
kuriage[j] = 0
}
kuriage[7] = 1
minus[0] = 255 - aQuo32Quo16Quo8
minus[1] = 255 - aQuo32Quo16Mod8
minus[2] = 255 - aQuo32Mod16Quo8
minus[3] = 255 - aQuo32Mod16Mod8
minus[4] = 255 - aMod32Quo16Quo8
minus[5] = 255 - aMod32Quo16Mod8
minus[6] = 255 - aMod32Mod16Quo8
minus[7] = 255 - aMod32Mod16Mod8
if((minus[7] + kuriage[7]) > 255){
kuriage[6] = 1
minus[7] = 0
}else{
minus[7] = minus[7] + kuriage[7]
}
for(j=6;j>0;j--){
if((minus[j] + kuriage[j]) > 255){
kuriage[j - 1] = 1
minus[j] = 0
}else{
minus[j] = minus[j] + kuriage[j]
}
}
if((minus[0] + kuriage[0]) > 255){
#こんなのは、範囲外
#kuriage[0] = 1
minus[0] = 0
}else{
minus[0] = minus[0] + kuriage[0]
}
join_minus = bin256[minus[0]] bin256[minus[1]] bin256[minus[2]] bin256[minus[3]]
join_minus = join_minus bin256[minus[4]] bin256[minus[5]] bin256[minus[6]] bin256[minus[7]]
join_minus = join_minus "\t"
join_minus = join_minus hex256[minus[0]] hex256[minus[1]] hex256[minus[2]] hex256[minus[3]]
join_minus = join_minus hex256[minus[4]] hex256[minus[5]] hex256[minus[6]] hex256[minus[7]]
return join_minus
}else{
join_plus = bin256[aQuo32Quo16Quo8] bin256[aQuo32Quo16Mod8] bin256[aQuo32Mod16Quo8] bin256[aQuo32Mod16Mod8]
join_plus = join_plus bin256[aMod32Quo16Quo8] bin256[aMod32Quo16Mod8] bin256[aMod32Mod16Quo8] bin256[aMod32Mod16Mod8]
join_plus = join_plus "\t"
join_plus = join_plus hex256[aQuo32Quo16Quo8] hex256[aQuo32Quo16Mod8] hex256[aQuo32Mod16Quo8] hex256[aQuo32Mod16Mod8]
join_plus = join_plus hex256[aMod32Quo16Quo8] hex256[aMod32Quo16Mod8] hex256[aMod32Mod16Quo8] hex256[aMod32Mod16Mod8]
return join_plus
}
}