Powershellでレジストリ上の"UTF16LEのバイト列"と文字列の相互変換を行う。
目的
レジストリに書かれているUTF16LEのバイト列を文字列と相互変換する。
方法
バイト列から文字列に変換する関数。
function REGUTF16LEByte2String(){ param( [string][parameter(mandatory)] $String ) $arry = $String.split(',') | ForEach-Object {[convert]::ToByte($_, 16)} return [System.Text.Encoding]::Unicode.GetString($arry) }
文字列からバイト列に変換する関数。
function String2REGUTF16LEByte(){ param( [string][parameter(mandatory)] $String ) return ([System.Text.Encoding]::Unicode.GetBytes($String) | ForEach-Object {$_.ToString("X2")}) -join "," }
使い方
PS > $a = String2REGUTF16LEByte "hoge" PS > $a 68,00,6F,00,67,00,65,00 PS > REGUTF16LEByte2String $a hoge
まとめ
便利。