本帖最后由 nyjy_hx 于 2020-12-14 17:01 编辑
- Func _ch10to16($t_10)
- $ch16 = ""
- If StringLen($t_10) > 0 And StringIsInt($t_10) And $tt > 0 Then
- $i = 0
- Local $t_16[2]
- If $t_10 > 15 Then
- While $t_10 / 16 > 1
- $t_16[$i] = Mod($t_10, 16)
- $t_10 = Floor($t_10 / 16)
-
- $i += 1
- ReDim $t_16[$i + 1]
- WEnd
- $t_16[$i] = $t_10
-
- Else
- $t_16[$i] = _zh16($t_10)
- EndIf
-
- For $i = UBound($t_16) - 1 To 0 Step -1
-
- $ch16 &= _zh16($t_16[$i])
- Next
-
- Else
- $ch16 = "-1"
- EndIf
- Return $ch16
-
- EndFunc ;==>_ch10to16
- Func _zh16($ch16)
- Switch $ch16
- Case "10"
- $ch16 = "A"
- Case "11"
- $ch16 = "B"
- Case "12"
- $ch16 = "C"
- Case "13"
- $ch16 = "D"
- Case "14"
- $ch16 = "E"
- Case "15"
- $ch16 = "F"
- EndSwitch
-
- Return $ch16
- EndFunc ;==>_zh16
- Func _ch16to10($t_txt)
- $_jieguo = 0
- $t_len = StringLen($t_txt)
- If $t_len > 0 Then
- If StringIsXDigit($t_txt) Then
- Dim $t_n[1]
- $k = $t_len
- ReDim $t_n[$t_len]
- For $i = $t_len To 1 Step -1
- $t_n[$k - $i] = StringUpper(StringMid($t_txt, $i, 1))
- Switch $t_n[$k - $i]
- Case "A"
- $t_n[$k - $i] = "10"
- Case "B"
- $t_n[$k - $i] = "11"
- Case "C"
- $t_n[$k - $i] = "12"
- Case "D"
- $t_n[$k - $i] = "13"
- Case "E"
- $t_n[$k - $i] = "14"
- Case "F"
- $t_n[$k - $i] = "15"
- EndSwitch
- Next
-
- For $i = 0 To UBound($t_n) - 1
- $_jieguo += $t_n[$i] * 16 ^ $i
- Next
-
- Else
- MsgBox(16, "检查字符串", "请检查字符串是否为十六进制" & @CR & "十六进制数只有(0-9)(A-F)")
- $_jieguo = 0
- EndIf
- Else
- MsgBox(16, "检查字符串", "没有检测到要转换的字符串")
- $_jieguo = 0
- EndIf
- Return $_jieguo
- EndFunc ;==>_ch16to10
复制代码
找了半天没有找到AU3的十六进制转换函数,自己写了一个 方便使用
调用方法 十进制转换十六进制 $变量=_ch10to16("十进制数字") 成功返回十六进制字符 错误返回-1 十进制数字只能是正数
十六进制转换十进制 $变量=_ch16to10("十六进制数字")成功返回十进制字符 错误返回0
|