vb 十六进制转换十进制

PrivateSubCommand1_Click()Text2.Text=Val("&h"&Text1.Text)EndSubPrivateSubForm_Load()T... Private Sub Command1_Click()
Text2.Text = Val("&h" & Text1.Text)
End Sub

Private Sub Form_Load()
Text1.Text = "ffff"
End Sub

为什么text2是-1?
8个f的时候text也是-1,这是什么情况?
展开
 我来答
缓步莫迟疑C
2013-03-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6217
采纳率:73%
帮助的人:6425万
展开全部
试试这样吧

Text2.Text = Val("&h" & Text1.Text)
改成
Text2.Text = Val("&h0" & Text1.Text)
或许可以成功.
更多追问追答
追问
还是-1。。。。
追答
那试试这样呢
Text2.Text = CDbl("&h" & Text1.Text)
现在没有VB环境,但用CDbl在VBS里可以成功.
百度网友bdb9803
2013-03-01 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:53%
帮助的人:9963万
展开全部
-1是 &hFFFF的十进制补码
追问
那这个问题应该怎么解决啊?我是个新手。。。
追答
Private Sub Command1_Click()
Text2.Text = hex2dec(Text1.Text)
End Sub

Private Sub Form_Load()
Text1.Text = "ffff"
End Sub

'把16进制数转换成10进制数
Public Function hex2dec(s As String) As Long
Dim i As Long, a As Variant, k As Long
k = 0
For i = Len(s) - 1 To 0 Step -1
a = Asc(UCase(Mid(s, i + 1, 1))) '统一求得各个字符的小写状态下的字符所对应的ASCII值
a = IIf(a >= 48 And a <= 57, a - 48, a - 55)
'0的ASCII码为48,字母a的ASCII码为65,而16进制下的A对应为10进制下的10
k = k + (16 ^ i) * a '累加
Next
hex2dec = k '得到的这个返回值 K 就是转换后的10进制数
End Function
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式