16進数の文字コード(ASCII)から文字列を取得
16進数の文字コード(ASCII)から文字列を取得するプログラムを作成しました。Encodingクラスのgetcharsメソッドを使用しました。getcharsメソッドは引数で指定した値を文字列に変換します。指定する値は10進数で渡します。そのため、引数で指定した16進数を10進数に変換する処理が必要です。変換方法は次を使います。
$dec = [system.Convert]::ToString("0x53",10) |
set-PSDebug -strict # ---------------------------------------- # 16進数の文字コード(ASCII)から文字列を取得 # 引数:文字コード # ---------------------------------------- function GetCharStr{ # 引数の取得 param( [string]$hex ) $hex_wk = $hex.split(" ") # 10進数に変換 $dec_array = @() for ( $n = 0; $n -le $hex_wk.length-1; $n++){ $dec_array += [system.Convert]::ToString("0x" + $hex_wk[$n],10) } # encodingオブジェクト取得 $encoding_wk = [system.Text.Encoding]::GetEncoding("ASCII") # 文字列の取得 $str = "" foreach ($dec in $dec_array){ $str += $encoding_wk.getchars($dec) } write-Host $str }