本ページには広告が含まれています。
2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin関数 (自作関数)を使います。
- 構文
- UString = binToHex( bin )
- 引数
- bin 必須
- 2進数
- 戻り値
- 16進数に変換した値
プログラム
//////////////////////////////////////////////////
// 【引数】
// bin : 2進数
// 【戻り値】
// 16進数に変換した値
//////////////////////////////////////////////////
FUNCTION binToHex(bin)
HASHTBL bh
bh["0000"] = "0"; bh["0001"] = "1"; bh["0010"] = "2"; bh["0011"] = "3";
bh["0100"] = "4"; bh["0101"] = "5"; bh["0110"] = "6"; bh["0111"] = "7";
bh["1000"] = "8"; bh["1001"] = "9"; bh["1010"] = "A"; bh["1011"] = "B";
bh["1100"] = "C"; bh["1101"] = "D"; bh["1110"] = "E"; bh["1111"] = "F";
// 小数ならば
IFB POS(".", bin) <> 0 THEN
DIM num = COPY(bin, 1, POS(".", bin) - 1)
DIM frac = COPY(bin, POS(".", bin) + 1)
num = strPad(num, CEIL(LENGTH(num) / 4) * 4, "0", LEFT)
frac = strPad(frac, CEIL(LENGTH(frac) / 4) * 4, "0", RIGHT)
DIM hex = ""
FOR i = 1 TO LENGTH(num) STEP 4
hex = hex + bh[COPY(num, i, 4)]
NEXT
hex = hex + "."
FOR i = 1 TO LENGTH(frac) STEP 4
hex = hex + bh[COPY(frac, i, 4)]
NEXT
RESULT = hex
ELSE
len = CEIL(LENGTH(bin) / 4) * 4
FOR i = 1 TO len - LENGTH(bin)
bin = "0" + bin
NEXT
bin = REPLACE(FORMAT(bin, len), " ", "0")
hex = ""
FOR i = 1 TO LENGTH(bin) / 4
str = COPY(bin, i * 4 - 3, 4)
hex = hex + bh[str]
NEXT
RESULT = hex
ENDIF
FEND
//////////////////////////////////////////////////
// 【引数】
// input : 入力文字列
// length : 埋めたあとの長さ
// str : 埋める文字
// type : 埋める方向
// 【戻り値】
// 指定文字で埋めた文字列
//////////////////////////////////////////////////
FUNCTION strPad(input, length, str = " ", type = RIGHT)
DIM s = ""
SELECT type
CASE LEFT
FOR i = 1 TO CEIL((length - LENGTH(input)) / LENGTH(str))
s = s + str
NEXT
input = COPY(s, 1, length - LENGTH(input)) + input
CASE RIGHT
FOR i = 1 TO CEIL((length - LENGTH(input)) / LENGTH(str))
s = s + str
NEXT
input = input + COPY(s, 1, length - LENGTH(input))
SELEND
RESULT = input
FEND
使い方
DIM array[] = "1101", "0011", "11011010", "10101101", "1111111101010101", "1111111101010110", "1111111111011011", "1111111101100011"
FOR item IN array
PRINT binToHex(item) + "," + item
NEXT
- 結果
D, 1101 3, 0011 DA, 11011010 AD, 10101101 FF55, 1111111101010101 FF56, 1111111101010110 FFDB, 1111111111011011 FF63, 1111111101100011
関連記事
- hexToBin関数 (自作関数)
- 16進数を2進数に変換します。2進数を16進数に変換するにはbinToHex関数を使います。
- binToDec関数 (自作関数)
- 2進数を10進数に変換します。10進数を2進数に変換するにはdecToBin関数を使います。
- hexToDec関数 (自作関数)
- 16進数を10進数に変換します。10進数を16進数に変換するにはdecToHex関数を使います。
- decToBin関数 (自作関数)
- 10進数を2進数に変換します。負数・小数の値にも対応しています。
- decToHex関数 (自作関数)
- 10進数を16進数に変換します。16進数を10進数に変換するにはhexToDec関数を使います。
- radToDeg関数 (自作関数)
- 弧度法(Radian)を度数法(Degree)に変換します。度数法を弧度法に変換するにはDegToRad関数を使います。
- degToRad関数 (自作関数)
- 度数法(Degree)を弧度法(Radian)に変換します。弧度法を度数法に変換するにはRadToDeg関数を使います。
- ARABIC関数 (自作関数)
- ARABIC関数は、ローマ数字をアラビア数字に変換する関数です。アラビア数字をローマ数字に変換するには、ROMAN関数を使います。
- ROMAN関数 (自作関数)
- ROMAN関数は、アラビア数字をローマ数字に変換する関数です。ローマ数字をアラビア数字に変換するには、ARABIC関数を使います。
- 16進数