知識は未だ霧の中

スパコン眼鏡NET。HPCのことはあまり書かない。

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

まとめ

便利。