如何从字符串字符中返回unicode 8字节值
问题描述:
我试图返回通常不是英语的字符串字符的2字节WORD十六进制值。基本上是Unicode的表示。用vb.net如何从字符串字符中返回unicode 8字节值
例:
FF5F =((
FF06 = &
这些在Unicode标准6.2代表我没有显示某些外语的能力。在这个集合中显示的字符
所以想要我的字符串字符被转换为这个2字节的值我没有能够在.net中找到一个函数来做到这一点
该代码目前只不过是一个循环遍历字符串的循环,所以没有示例进度。
我已经尝试了AscW和ChrW函数,但它们不返回2byte值。 ASCII在255以上看起来似乎不可靠。
如有必要,我可以隔离正在测试的可能语言,以便通过比较只考虑一种语言,尽管总是可以使用英文字符。
任何指导,将不胜感激。
答
collegaue协助开发解决方案。字符串的每个字符都转换为字符数组,然后转换为无符号整数,然后转换为十六进制。
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
然后,我将生成的十六进制与规范报告进行比较。
答
我认为你可以将您的字符串转换为字节数组,其中,看起来像在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这里偷了这个。
这些是全角字符,在东亚版式中很常见。像MS Gothic这样的字体可以显示它们。你很难清楚你用它来做什么,使用String.ToCharArray()或者只是索引字符串是一种获取值的简单方法。 – 2013-02-20 17:08:40
并非所有Unicode字符都适合2个字节。无论你是在谈论UTF-16代码单元(.NET:System.Char)还是你对大小的假设都是错误的。 – 2013-02-21 10:27:03
我指的是这个链接中的半角和全角字符的引用,特别是片假名http://www.unicode.org/charts/PDF/UFF00.pdf,在本规范中都是2字节。 – htm11h 2013-02-21 13:23:19