如何从字符串字符返回unicode 8字节值

时间:2013-02-20 16:35:17

标签: vb.net unicode

我正在尝试返回字符串字符的2字节WORD Hex值,该字符串通常不是英语。基本上是Unicode表示。使用vb.net

前:

FF5F =((

FF06 =&

这些以unicode标准6.2表示。我无法显示此套装中显示的一些外语字符。

所以希望我的字符串字符转换为这个2字节值。我无法在.net中找到一个函数来执行此操作。

代码目前只不过是循环遍历字符串字符的for循环,因此没有样本进展。

我尝试过AscW和ChrW函数,但它们没有返回2byte值。 ASCII在255以上似乎不可靠。

如果有必要,我可以隔离可能被测试的语言,以便通过比较只考虑一种语言,尽管英语字符总是可行的。

任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:0)

我认为您可以将字符串转换为字节数组,在C#中看起来像这样:

static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

从那里你可以从数组中获取两个第一个字节,然后你去了,你有它们。

如果你想在屏幕上显示它们,我想你应该将它们转换成十六进制或某种可显示的格式。

我从question这里偷了这个。

答案 1 :(得分:0)

一名同事协助开发解决方案。字符串的每个字符都转换为字符数组,然后转换为无符号整数,然后转换为十六进制。

lt = myString
Dim sChars() As Char = lt.ToCharArray

For Each c As Char In sChars
     Dim intVal As UInteger = AscW(c)
     Debug.Print(c & "=" & Hex(intVal))
Next

注意AscW函数... AscW返回输入字符的Unicode代码点。这可以是0到65535.返回的值独立于当前线程的区域性和代码页设置。 http://msdn.microsoft.com/en-us/library/zew1e4wc(v=vs.90).aspx

然后,我将生成的Hex与报告规范进行比较。