2016-11-03 8 views
0

私は16進数の文字列が異なる言語の文字で構成されています。 この16進文字列をUnicodeテキストに変換するvb-script関数を手伝ってください。16進数をユニコードに変換するVBScript関数

16進文字列 "506F7274756775C3AA73"については、出力として "Português"を取得する必要があります。

私は以下の関数を試してみましたが、出力として "Português"を与えます。

MsgBox ConvertHexToUnicode("506F7274756775C3AA73") 



Function ConvertHexToUnicode(hexString) 

Dim Strlen 
Dim Charaset_array(20) 
Dim i 
Dim j 
Strlen = Len(hexString) 
i = 0 
j = 1 

Do 
    Charaset_array(i) = Mid(hexString,j, 2) 

    i = i + 1 
    j = j + 2 


Loop While j < Strlen 

ConvertHexToUnicode = "" 

For Each chara In Charaset_array 

If Not(IsEmpty(chara)) Then 
    ConvertHexToUnicode = ConvertHexToUnicode + ChrW("&H" & chara) 
End If 
Next 

End Function 
+1

あなたは[何をしようとしているがありますかmcve]を共有するには?これが役に立たないと思われる場合は、投稿する前に[ask]をお読みください。 – Lankymart

+0

問題を再現するサンプルコードを使用して質問を編集しました。 @Lankymart –

+0

問題はそれぞれのHex値が1バイトを表しますが、一部の文字は2バイト以上で構成され、文字が不一致になっています。文字列には、各文字が何バイト使用されているかを識別する方法がないため、文字列を自動解読する方法を見つけることはほとんどありません。 – Lankymart

答えて

0

使用Mid()文字を構築するために16進数(文字列)にあなたの入力文字列をカットし、先頭に追加& H進リテラルを取得するために、そしてChrW()します

>> s = "00001F00" 
>> WScript.Echo Mid(s, 5, 4) 
>> WScript.Echo "&H" & Mid(s, 5, 4), CLng("&H" & Mid(s, 5, 4)) 
>> WScript.Echo ChrW("&H" & Mid(s, 5, 4)), AscW(ChrW("&H" & Mid(s, 5, 4))) 
>> 
1F00 
&H1F00 7936 
ἀ 7936 
+0

なぜ質の低い質問に答えることを主張していますか?彼らは、彼らが問題を試みてきたことを示すための例を提供していませんが、同じことをもっとやるように促す答えを投稿します!あなたがSOコミュニティを助けていないなら、あなたはそれを妨げているのです! – Lankymart

+0

[The Help Vampire Problem](http://meta.stackexchange.com/a/19673/202529)に追加するだけです。 – Lankymart

関連する問題