首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

带英文字符串计算补码程序出现的有关问题

2012-01-03 
带英文字符串计算补码程序出现的问题下面是我写的转换函数:[注]:但如果字符串中没有出现英文字符时,只有数

带英文字符串计算补码程序出现的问题

下面是我写的转换函数:
[注]:但如果字符串中没有出现英文字符时,只有数字时,这个函数运行的补码结果是正确的,这里的字符串我要得到的效果是这样的:如果输入字符串是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,请各位大虾帮帮忙,谢谢!

[解决办法]

VB code
Select Case OutBuf 'OutBuf 是字符串'    ...    Case A 'A 是未定义的变量'    ... 

热点排行