PowerShell: 「10進数」⇔「2進数」相互変換する

PowerShellで10進数と2進数を相互変換する方法を紹介します。 10進数から2進数へ変換するにはToStringメソッド、 2進数から10進数へ変換するにはToInt32メソッドを使用します。 どちらも.NET Framework Convertクラスのメソッドです。

「10進数」を「2進数」へ変換

10進数を2進数に変換する場合はToStringメソッドを使います。

書式
[convert]::ToString(10進数の数値, 2)

第2引数に変換したい基数の「2」を指定します。

ToStringメソッドを利用して10進数の1, 2, 7, 8を 2進数に変換します。

[convert]::ToString(1, 2) # 1
[convert]::ToString(2, 2) # 10
[convert]::ToString(7, 2) # 111
[convert]::ToString(8, 2) # 1000

「2進数」を「10進数」へ変換

2進数を10進数に変換する場合はToInt32メソッドを使います。

書式
[convert]::ToInt32( 2進数の文字列, 2)

第1引数に2進数の文字列("10"や"1101"等)を指定し、 第2引数に第1引数で指定した数の基数(ここでは2進数なので2)を指定します。

ToInt32メソッドを利用して2進数の1, 10, 111, 1000を10進数に 変換します。

[convert]::ToInt32( "1", 2)    # 1
[convert]::ToInt32( "10", 2)   # 2
[convert]::ToInt32( "111", 2)  # 7
[convert]::ToInt32( "1000", 2) # 8

注意点として、 第1引数で2進数の文字列を指定する際に、 プレフィックスの"0b"を付けるとエラーになります。 次のコードではエラーが発生します。

# 0bを付加
[convert]::ToInt32( "0b1", 2)  # エラー

参考サイト
Convert クラス (System) | Microsoft Docs

PowerShell