【秀丸マクロ】2進数を16進数に変換する

# 秀丸マクロで2進数を16進数に変換する

大量の2進数データを4桁ごとに区切り、16進数に一括変換するのに便利なマクロです。
参考：http://hidemaruo.dip.jp:81/hidesoft/hidesoft_4/x04554.html
（ながさわ様記載のソースコード）

## 動作

2進数が書かれたテキストを秀丸で開き、このマクロを実行すると、2進数4桁分をファイルの頭から順番に検出（具体的には"[0,1]{4}"の正規表現にヒットするもの）を見つけ、16進数に変換していきます。2進数4桁が見つからなくなるか、ファイルの最後に到達したらマクロ処理を終了します。

## マクロ内容

```
gofiletop

while ( code != eof ) {
	searchdown "([0,1]{4})",regular;
	if( !result ) break;
	$s = gettext(foundtopx,foundtopy,foundendx,foundendy);
	call bin2hex $s;
	replacedown $s,$$return;
}

endmacro

bin2hex:
 $$bin = $$1;
 ##dec = 0;
 ##l = strlen($$bin) - 1;
 ##r = 1;
 while(##l >= 0){
     if(midstr($$bin, ##l, 1) == "1"){
         ##dec = ##dec + ##r;
     }
     ##l = ##l - 1;
     ##r = ##r * 2;
 }
 return hex(##dec);
```

## 使い方

1. メニューバーから [マクロ(M)]>[マクロ実行(X)]
1. マクロ実行ダイアログでお好みのファイル名.MACを入力し、[編集(E)]をクリック
1. 存在しないファイルの場合は「新しく作成しますか？」と聞かれる。OKをクリック
1. お好きな名前.MACの編集画面が開く。上記のコードをコピペして保存
1. マクロ実行ダイアログから作成した.MACを選んで[OK]をクリックして実行

ショートカットとかマクロ登録とかの実行方法はお好みで

## 制限事項

1行目から2進数が入っていると上手くいかないみたいです。
2行目から書くようにしてください。

## 動作例

これが

```

01000011010011010010000000000000
01000011010011010011000000000000
01000100001100000011010000000000
01000100001100000011111000000000
11000011010011010010000000000000
11000011010011010011000000000000
11000100001100000011010000000000
11000100001100000011111000000000
00111111001100101000101101101101
00111111001100101001010111101001
01000000000111111001011100100100
01000000000111111001110110110010
01000001000100111011111001110110
01000001000100111100001010001111
10111111001100101000101101101101
10111111001100101001010111101001
11000000000111111001011100100100
11000000000111111001110110110010
11000001000100111011111001110110
11000001000100111100001010001111

0100001101001101001000000000000000000000000000000000000000000000
0100001101001101001100000000000000000000000000000000000000000000
0100010000110000001101000000000000000000000000000000000000000000
0100010000110000001111100000000000000000000000000000000000000000
1100001101001101001000000000000000000000000000000000000000000000
1100001101001101001100000000000000000000000000000000000000000000
1100010000110000001101000000000000000000000000000000000000000000
1100010000110000001111100000000000000000000000000000000000000000
0011111100110010100010110110110110000110111011000001011111101011
0011111100110010100101011110100111100001101100001000100110100000
0100000000011111100101110010010001110100010100111000111011110011
0100000000011111100111011011001000101101000011100101011000000100
0100000100010011101111100111011011001000101101000011100101011000
0100000100010011110000101000111101011100001010001111010111000010
1011111100110010100010110110110110000110111011000001011111101011
1011111100110010100101011110100111100001101100001000100110100000
1100000000011111100101110010010001110100010100111000111011110011
1100000000011111100111011011001000101101000011100101011000000100
1100000100010011101111100111011011001000101101000011100101011000
1100000100010011110000101000111101011100001010001111010111000010
```

こうじゃ

```

40613090000000
40613091000000
4080C011400000
4080C011E00000
C0613090000000
C0613091000000
C080C011400000
C080C011E00000
31E0C140B0D101
31E0C14151D001
400071C1704100
400071C1D16010
402041D1E0E110
402041E0211111
B1E0C140B0D101
B1E0C14151D001
C00071C1704100
C00071C1D16010
C02041D1E0E110
C02041E0211111

4061309000000000000000000
4061309100000000000000000
4080C01140000000000000000
4080C011E0000000000000000
C061309000000000000000000
C061309100000000000000000
C080C01140000000000000000
C080C011E0000000000000000
31E0C140B0D16030E18051F0B
31E0C14151D07101B01020D00
400071C1704111A0507031713
400071C1D160816101C151004
402041D1E0E1B040B080E0A18
402041E02111D0E02111D0E02
B1E0C140B0D16030E18051F0B
B1E0C14151D07101B01020D00
C00071C1704111A0507031713
C00071C1D160816101C151004
C02041D1E0E1B040B080E0A18
C02041E02111D0E02111D0E02
```

## つぶやき

えっちらおっちらマクロ組んだりする残念なミドル屋さんのTipsでした。
スマートな技術者になりたい。