在VB6中将十六进制值转换为十进制值

12

我该如何在VB6中将十六进制值转换为十进制值?

我只是想看看这个是否有效:

Dim hexVal as string
hexVal = "#7B19AB"
clng("&H" & hexVal)

但是,我遇到了"类型不匹配"的错误。


2
啊,你的意思是“将十六进制字符串转换为二进制长整型”。根本没有涉及到“十进制”。 - Bob77
8个回答

21

去掉 # 标志

Dim hexVal as string
hexVal = "7B19AB"
clng("&H" & hexVal)

对于大数,您可能需要使用下面的技巧,否则它会给您负数。https://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2042&lngWId=1https://pastebin.com/UjzD4N8m - Krishnan Venkiteswaran

5

将hexVal字符串中的井号(#)去掉。


3

这应该可以解决问题。

Dim hexVal as String
hexVal = "#7B19AB"
Dim intVal as Integer
intVal = Val("&H" & Replace(hexVal, "#", ""))

3

试一下:

value=CDbl("&H" & HexValue) 

或者

value=CInt("&H" & HexValue) 'but range +- 32,768

1
谢谢您发布这个答案,但它是其他已经发布和接受的答案的副本。如果您想改进现有的答案,请编辑它,社区中的其他人将会审核它。 - Deanna

3

试用这种方式:

Print Hex(Asc(Text1.Text))

1

非常小心。

Dim hexVal as string
hexVal = "FFFF"
clng("&H" & hexVal)

由于它认为你的十六进制值是有符号的,所以它将返回-1的值。对于F00A,它再次认为它是有符号的。

用ABS替换Clng。


0
Dim uzunluk as Integer

On Error Resume Next
uzunluk = Len(Text1.Text)
For i = 0 To uzunluk
     Text1.SelStart = i
     Text1.SelLength = 1
     Print Hex(Asc(Text1.SelText))
Next i

0
Dim hexVal As String
Dim str As String
Dim uzunluk As Integer

On Error Resume Next

hexVal = "#7B19AB" 

str = Replace(hexVal, "#", "")
Text1.Text = str

uzunluk = Len(Text1.Text) 

For i = 0 To uzunluk 
    Text1.SelStart = i 
    Text1.SelLength = 1 
    Print Hex(Asc(Text1.SelText))
Next i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接