软件注册站
热情软件屋

 
如何知道字符串表示的十六进制数是多少
编号: QA002173    
建立日期: 1999年12月6日 最后修改日期: 2004年2月29日
所属类别: Visual Basic - 其他方面
   
    操作系统:WIN98
    编程工具:VB
    遇到的问题:
    有两个字符串变量,每个变量都可转换为一个有效的十六进制数,问题是如何知道这两个字符串组合在一起的十六进制数是多少?例如:"AA"与"BB",如何知道(&HAABB)=-21829?多谢。(杨旭)
   
    李海的意见:
    使用Val()函数,如:
    s1 = "AA"
    s2 = "BB"
    s = "&H" + s1 + s2 ' 此时s="&HAABB"
    Print Val(s)
    王豫翔的意见:
    我在开发CPU卡时同样遇到这个问题,我写了一个通用函数:(大概是以下这样)
    Dim i As Integer
    Dim ii As Integer
    Dim bb As String
    Dim cc As Double
    Dim aa As String
    
    aa = "aabbccdd"
    
    if aa mod 2 <>0 then "0"+aa
    
    For i = 1 To Len(aa) / 2
     bb = Val("&H" + Left(Right(aa, i * 2), 2)) * 256 ^ ii
     ii = ii + 1
     cc = cc + Val(bb)
    Next i
    
    

    最终得到的CC就是你要的数值。
    
    void main(){}的意见:
    下面的函数很容易使用:
    CByte() ' unsigned char
    CInt() ' int
    CLong() ' long
    CDec() ' up to 2^96
    ..
    参数可以是"&H..."字符串。
    sub main()
    
    dim char_val as string
    char_value = ""
    char_value = "&HFFFFFFFF" '-1 = 0xffffffff
    dim long_value as long
    long_value=0
    long_value=CLng(char_value)
    call msgbox (CStr(long_value),,"value of a hex string")
    
    end sub
    
    你可以看到消息框显示"-1"。
    但是记住: 不要使用大于2147483647(4294967296/2-1, 2^31-1)或小于-2147483647的数, 否则程序会退出。另外,这个依赖于缓冲的大小(变量类型: unsigned char, short或long)

    

此问题由李海等回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 其他方面,

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio