文字列を16進数で表示

引数に指定した文字列を16進数で表示するプログラムを作成しました。今回もEncodingクラスを使用しています。GetEncodingメソッドでEncodingオブジェクトを取得することが出来ます。引数に文字コードの名前を指定することが可能です。指定可能な名前の一覧は以下Microsoft MSDNのページにあります。
http://msdn.microsoft.com/ja-jp/library/system.text.encoding(VS.80).aspx
今回は文字コードとしてEUC-JP、shift_jisiso-2022-jpを使います。指定方法は以下のようにします。

$aaa = [System.Text.encoding]::GetEncoding("EUC-JP")
$aaa = [System.Text.encoding]::GetEncoding("shift_jis")
$aaa = [System.Text.encoding]::GetEncoding("iso-2022-jp")
$aaaにはEncodingオブジェクトが入ります。EncodingオブジェクトのGetBytesメソッドで設定されている文字コードを10進数で取得します。取得した10進数をSystem.ConvertクラスのToStringメソッドで16進数に変換しています。

set-PSDebug -strict
# ---------------------------------------
# 文字コードを取得する
# 引数:コードを取得する文字列
# ---------------------------------------
Function GetCharCode{
    
    # 引数の取得
    param([string]$str)

    # 文字コードの設定
    $char_code_array = "EUC-JP","shift_jis","iso-2022-jp"
    
    # 何進数で表示するか
    [int]$out_number = 16

    # 文字コード分ループ
    foreach ( $char_code in $char_code_array ) {
    
        # 変数初期化
        $dec_codes = @{}
        $out_code_num = ""
    
        # encordingオブジェクト取得
        $encoding_wk = [System.Text.encoding]::GetEncoding($char_code)
        
        # 10進数の文字コード取得
        $dec_codes = $encoding_wk.getbytes($str)
        
        # 指定した進数に変換
        foreach ( $dec_code in $dec_codes ){
            $out_code_num += [System.Convert]::ToString($dec_code,$out_number) + " "
        }
        
        # 文字コード名取得
        $out_code_name = $encoding_wk.EncodingName
        
        # コードを大文字に変換
        $out_code_num = [String]$out_code_num.toupper()    
        
        # 画面出力
        write-Host $out_code_name
        write-Host $out_code_num
        write-Host ""
    }
}

以下実行結果です。