网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月29日漏签0天
vb吧 关注:156,050贴子:1,166,221
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 26回复贴,共1页
<<返回vb吧
>0< 加载中...

【CBM666 十六进制数值的转换】

  • 只看楼主
  • 收藏

  • 回复
  • cbm666
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我们知道16进制的元素是0123456789ABCDEF 总共16个元素的集合,我们经常需要将16进制换算为10进制或2进制,尤其是串口或网口通讯, VB6提供了Hex函数 能将10进制数值转换为16进制, 但是VB6却没有提供如何将16进制转换为10进制数值的函数, 如何计算这个数值, 下面列出计算式便可明白了
例如: 16进制 【1234ABCD】 换算为10进制数值的计算式:
0123456789当大于9时 就转为ABCDEF来替代 A=10 B=11 C=12 D=13 E=14 F=15
Tval = 1 * 16 ^ 7 + 2 * 16 ^ 6 + 3 * 16 ^ 5 + 4 * 16 ^ 4 + 10 * 16 ^ 3 + 11 * 16 ^ 2 + 12 * 16 ^ 1 + 13 * 16 ^ 0
MsgBox Tval 将返回 305441741
Tval 就是1234ABCD的10进制数值
再将10进制数值还原回来就很简单了, 只要使用VB6自带的函数Hex即可
MsgBox Hex(Tval) 将返回 305441741
再举一个例 FFFFFFFF
F 的10进制值 = 15
例如: 16进制 【FFFFFFFF】 换算为10进制数值的计算式:
Tval = 15 * 16 ^ 7 + 15 * 16 ^ 6 + 15 * 16 ^ 5 + 15 * 16 ^ 4 + 15 * 16 ^ 3 + 15 * 16 ^ 2 + 15 * 16 ^ 1 + 15* 16 ^ 0
MsgBox Tval 将返回 4294967295
MsgBox Hex(Tval) 将返回 FFFFFFFF


  • cbm666
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
MsgBox Hex(Tval) 将返回 305441741
改为
MsgBox Hex(Tval) 将返回 1234ABCD


2026-01-29 17:24:41
广告
不感兴趣
开通SVIP免广告
  • oshi001
  • 钩子编程
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果是这样的话.那将十进制数的浮点数转为十六进制呢?有没有快速的方法来解决?然后再将浮点型的十六进制数转为十进制呢?又是否有快速的方法?


  • cbm666
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
举个例子 将 0*C1480000
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Sub Command1_Click()
MsgBox Hex2Dec("C1480000") '返回 -12.5
End Sub
Public Function Hex2Dec(Hstr As String) As Single
' 将十六进制转化成十进制浮点数
Dim L As Long, f As Single, DecVal!
L = Val("&H" & Hstr)
CopyMemory f, L, 4
Hex2Dec = Format(f, "0.00")
End Function


  • Lyhoki
  • 子类化
    13
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
10转16不麻烦,16转10麻烦


  • 初音七奈
  • 钩子编程
    15
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
如果是8位以内的有符号十六进制数(比如n="1234ABCD"),那么用表达式Val("&H" & n & "&")就可以返回其对应的十进制数305441741
但如果十六进制数超过8位,或者需要返回无符号的数值,那么这个转换还是有意义的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 26回复贴,共1页
<<返回vb吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示