我是VB6的新手,我想将参数从Double转换为Hex以获得中文Unicode值。这里的问题是输入值为1-127,输出是相同的。对于超过127的值,输出为63(视为?)。该参数长度为4个字节。
尽管使用了 ChrW ,但仍会发生这种情况。我的计算机已在“系统区域设置”下设置为“简体中文”。有办法克服这个问题吗?
Dim sHex As String
Dim sTmp As String
Dim n As Integer
Dim m As Integer
Dim sRet As String
Dim nByteCountMerk As Integer
Public Function ConvDoubleToHexString(dVal As Double, ByVal nByteCount As Integer) As String
m = 1
sHex = Hex(dVal)
nByteCountMerk = nByteCount
If nByteCount < Len(sHex) / 2 Then nByteCount = Len(sHex) / 2
If nByteCount < 1 Then nByteCount = 1
sHex = String(nByteCount * 2 - Len(sHex), "0") & sHex
For n = 0 To nByteCount - 1
sTmp = ChrW(Val("&H" & Mid(sHex, m, 2)))
m = m + 2
sRet = sRet & sTmp
next n
End Function
答案 0 :(得分:-1)
您必须在控制面板中更改“非Unicode程序的语言”。
我已经写了一些关于这个问题的注释here。这些笔记很旧,有来自Windows XP的屏幕截图,但我很确定相同的设置仍然存在。
问题是VB6仅部分基于Unicode。在内部,所有字符串都是Unicode,但是控件和菜单中的内置不是。