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