带英文字符串计算补码程序出现的问题
下面是我写的转换函数:
[注]:但如果字符串中没有出现英文字符时,只有数字时,这个函数运行的补码结果是正确的,这里的字符串我要得到的效果是这样的:如果输入字符串是0104A000B0000C000000000,按位成十六进制相加,就得到十六进制26,其补码是DA。这个DA就是我想要的结果啦。我想知道我这程序出了什么问题,是字符空间的存储问题吗?有什么办法可解决的?
Function CheckOut(ChkValue As String) As String
Dim j As Integer
Dim OutNum As Integer
Dim OutNum1 As Integer
Dim OutNum2 As Integer
Dim OutBuf As Variant
Dim HightStrHex As Integer
Dim LowStrHex As Integer
OutNum = 0
OutNum1 = 0
OutBuf = 0
HightStrHex = 0
LowStrHex = 0
'OutBuf = StrConv(ChkValue, vbFromUnicode) '这里用strconv函数
For j = 1 To Len(ChkValue)
OutBuf = Mid(ChkValue, j, 1)
Select Case OutBuf
Case 0
OutNum1 = 0
Case 1
OutNum1 = 1
Case 2
OutNum1 = 2
Case 3
OutNum1 = 3
Case 4
OutNum1 = 4
Case 5
OutNum1 = 5
Case 6
OutNum1 = 6
Case 7
OutNum1 = 7
Case 8
OutNum1 = 8
Case 9
OutNum1 = 9
Case A
OutNum1 = 10
Case B
OutNum1 = 11
Case C
OutNum1 = 12
Case D
OutNum1 = 13
Case E
OutNum1 = 14
Case F
OutNum1 = 15
End Select
OutNum = OutNum + OutNum1
Next j
OutNum2 = 256 - OutNum
HightStrHex = OutNum2 \ 16
LowStrHex = OutNum2 Mod 16
If HightStrHex < 10 Then
HightStrHex = HightStrHex + 48
Else
HightStrHex = HightStrHex + 55
End If
If LowStrHex < 10 Then
LowStrHex = LowStrHex + 48
Else
LowStrHex = LowStrHex + 55
End If
CheckOut = Chr$(HightStrHex) + Chr$(LowStrHex)
End
测试中将一串字符串“0104A000B0000C000000000”共24个,但是运算后的补码是D9,正确应该是DA,请各位大虾帮帮忙,谢谢!
[解决办法]
Select Case OutBuf 'OutBuf 是字符串' ... Case A 'A 是未定义的变量' ...