binToHexバイナリートゥーヘクサデシマル

本ページには広告が含まれています。

2進数を16進数に変換します。16進数を2進数に変換するにはhexToBin (自作関数)を使います。

構文
binToHex( bin )
引数
bin 省略可
2進数
戻り値

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   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

使い方

UWSC
DIM array[] = "1101", "0011", "11011010", "10101101", "1111111101010101", "1111111101010110", "1111111111011011", "1111111101100011"

FOR item IN array
	PRINT binToHex(item) + "," + item
NEXT
結果
CSV
D,   1101
3,   0011
DA,   11011010
AD,   10101101
FF55,   1111111101010101
FF56,   1111111101010110
FFDB,   1111111111011011
FF63,   1111111101100011

関連記事

hexToBin (自作関数)
16進数を2進数に変換します。負数・小数の値にも対応しています。
binToDec (自作関数)
2進数を10進数に変換します。負数・小数の値にも対応しています。
hexToDec (自作関数)
16進数を10進数に変換します。負数・小数の値にも対応しています。
decToHex (自作関数)
10進数を16進数に変換します。負数・小数の値にも対応しています。
decToBin (自作関数)
10進数を2進数に変換します。負数・小数の値にも対応しています。
radToDeg (自作関数)
弧度法 から 度数法 に変換します。
degToRad (自作関数)
度数法 から 弧度法 に変換します。
ARABIC (自作関数)
ローマ数字アラビア数字に変換します。
ROMAN (自作関数)
アラビア数字ローマ数字に変換します。
16進数