0

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

前任:

FF5F = ((

FF06 = &

这些在 unicode 标准 6.2 中表示。我无法显示此集中显示的某些外语字符。

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

该代码目前只不过是一个循环遍历字符串字符的 for 循环,因此没有示例进度。

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

如有必要,我可以隔离正在测试的可能语言,以便通过比较只考虑一种语言,尽管始终可以使用英文字符。

任何指导将不胜感激。

4

2 回答 2

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;
}

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

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

我从这里的问题中偷了这个。

于 2013-02-20T16:40:50.063 回答
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

Note the AscW function... AscW returns the Unicode code point for the input character. This can be 0 through 65535. The returned value is independent of the culture and code page settings for the current thread. http://msdn.microsoft.com/en-us/library/zew1e4wc(v=vs.90).aspx

I then compare the resulting Hex to the spec for reporting.

于 2013-02-21T13:39:41.597 回答