十六进制.哈哈,有意思VB没有十六进制转换吗?好象只有转成10进制的.
以前我用笨办法做过任意位数的计算器,办法就是把它以字符形式一位一位地算.(够笨吧?不过无任多少位都是可以算的,只是速度上有些问题,开平方,算了一个多小时才算到小数点的几千位)
我想你也可以用我的笨方法算.
不过,正确的算法应该是以二进制算.这样速度更快(当然你得对二进制熟了).
问题是不知道你想怎么加两个数啊,你不说你的两个数是哪几位相加,不相加的几位怎么处理(你所说的验证位)?
你至少也得举个例:哪个两数相加后应该是等于多少啊。
假如说一串字符:代码为:STX 0 0 F F 0 0 1 1 0 1 1 0 1 ETX 16进制的ASCII码为:02H 30H 30H 46H 46H 30H 30H 31H 31H 30H 31H 31H 30H 31H 03H ,计算其校验和,即将其ASCII码相加,舍去高位,取其低两位,在这里这一串字符的校验和为41H 36H。这是用计算器按出来的,就是不知道用VB怎么编程实现?希望各位帮帮忙!
[此贴子已经被作者于2007-6-2 21:55:40编辑过]
随便写个函数把16→10处理
然后用Hex()转回16,返回String
Right(String,2)
分别对2个字符处理转ASC(),转16进制就是结果
我自己都晕晕的
[此贴子已经被作者于2007-6-4 14:09:12编辑过]
Option Explicit
Private Sub Form_Load()
Dim STR1 As String, NUM1 As Integer, NUM2 As Integer
STR1 = Chr(2) & "00FF001101101" & Chr(3)
STR2Num STR1, NUM1, NUM2
Debug.Print "NUM1=" & Hex(NUM1) & " NUM2=" & Hex(NUM2)
End Sub
Private Sub STR2Num(ByVal STR1 As String, NUM1 As Integer, NUM2 As Integer)
'这个过程是返回两个十进制数分别放入NUM1、NUM2中
Dim Byte_D() As Byte, I As Long, K As Double
Byte_D = StrConv(STR1, vbFromUnicode)
For I = 0 To UBound(Byte_D)
K = K + Byte_D(I)
Next
STR1 = IIf(K < 16, "0" & Hex(K), Right(Hex(K), 2))
Byte_D = StrConv(STR1, vbFromUnicode)
NUM1 = Byte_D(0)
NUM2 = Byte_D(1)
End Sub