Hex 转十六进制
🎯功能
将数值转换为十六进制字符串内容
📜语法
结果 = Hex(数值)
📥参数
参数 | 数据类型 | 解释 |
---|---|---|
数值 | 数值型 | 任意有效数值表达式 |
📤返回
字符串
, 返回最大八位的十六进制字符串, 如果 数值 参数不是整数,则在进行运算前将其四舍五入为最接近的整数。
💡示例
Dim MyHex
MyHex = Hex(5) ' 返回 5。
MyHex = Hex(10) ' 返回A。
MyHex = &H459
TracePrint MyHex ‘输出1CB
//十六进制字符串转十进制方法
//上面最后一步MyHex变量的值是1CB
Dim num
num = Clng("&h" & MyHex)
TracePrint num '输出459
/*一个VBScript中&h的坑
下面x的值是-1, y值是65535
原因: VBScript认为&HFFFF存放的是Integer类型, 但实际应该是Long型
解决: 在十六进制后面加一个&的语法是来自VB, 表示强制转换成Long型
*/
x = &HFFFF
y = &HFFFF&
TracePrint TypeName(x) & ": " & x
TracePrint TypeName(y) & ": " & y
//高级例子
//说明: 2到62任意进制转换
//原内容: 待转换的原始内容数据
//原进制: 原始内容的进制, 例如10, 16等
//新进制: 要转换到的目标进制, 例如2, 32等
//返回: 得到转换后的字符串内容
Function zmConvBase(原内容, 原进制, 新进制)
Dim digits, num, ptr, i, n, c
digits = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
If 原进制 < 2 Or 原进制 > 62 Then
MsgBox "错误: 原进制范围必须在2到62之间", vbExclamation + vbSystemModal, "错误进制"
End If
If 新进制 < 2 Or 新进制 > 62 Then
MsgBox "错误: 新进制范围必须在2到62之间", vbExclamation + vbSystemModal, "错误进制"
End If
原内容 = CStr(原内容) : n = Len(原内容)
For i = 1 To n
c = Mid(原内容, i, 1)
If c >= "0" And c <= "9" Then
c = c - "0"
ElseIf c >= "A" And c <= "Z" Then
If 原进制 <= 36 and 新进制 <= 36 Then
c = Asc(c) - Asc("A") + 10
else
c = Asc(c) - Asc("A") + 36
End If
ElseIf c >= "a" And c <= "z" Then
c = Asc(c) - Asc("a") + 10
Else
c = 原进制
End If
If c < 原进制 Then
num = num * 原进制 + c
End If
Next
Do
ptr = ptr & Mid(digits, (num Mod 新进制 + 1), 1)
num = num \ 新进制
Loop While num
zmConvBase = StrReverse(ptr)
End Function
//将内容ffff从16进制转换为10进制, 得到字符串结果
TracePrint zmConvBase("ffff", 16, 10)
📘备注
- 您可以通过在数字前面添加前缀
&H
来表示十六进制数。例如,在十六进制计数法中,&H10
表示十进制数16
。 - 平时使用
&
当做连接符时, 前后最好加空格, 避免与h字符连接被误认为是十六进制内容 - 与进制有关的还要一个函数 oct