在au3里,二进制数是用十六进制来表示的。不过可以利用自编UDF来转换。
;===============================================================================
; 说明: 十进制转换为二进制
; 语法: _DecToBinary($sDecStr[, $iLength = 0])
; 参数: $sDecStr - 需要转换的十进制字符
; $iLength - [可选] 返回长度
; 需要: 无
; 返回: 成功 - 二进制字符
; 失败 - 空字符 "", 并设置 @error 到 1
; 备注: 限制: 1125899906842622d / 3fffffffffffeh
;===============================================================================
Func _DecToBinary($sDecStr, $iLength = 0)
Local $sBinStr = ""
If NOT StringRegExp($sDecStr, "^\d+$") Then Return SetError(1, 0, "")
If $sDecStr > 1125899906842622 Then Return SetError(1, 0, "")
While $sDecStr > 0
$sBinStr = Mod($sDecStr, 2) & $sBinStr
$sDecStr = Int($sDecStr / 2)
WEnd
While StringLen($sBinStr) < $iLength
$sBinStr = "0" & $sBinStr
WEnd
Return $sBinStr
EndFunc ;==>_DecToBinary
;===============================================================================
; 说明: 二进制转换为十进制
; 语法: _BinaryToDec($sBinStr)
; 参数: $sBinStr - 需要转换的二进制字符
; 需要: 无
; 返回: 成功 - 十进制整数
; 失败 - 空字符 "", 并设置 @error 到 1
; 备注: 限制: 9223372036854775807d / 7fffffffffffffffh / [01]{1,63}b
; 注意: 输入超过 999999999999999d / 38d7ea4c67fffh 将输出指数形式
;===============================================================================
Func _BinaryToDec($sBinStr)
Local $sDecStr = 0
If NOT StringRegExp($sBinStr, "^[01]{1,63}$") Then Return SetError(1, 0, "")
For $i = 1 To StringLen($sBinStr)
$sDecStr = $sDecStr * 2 + StringMid($sBinStr, $i, 1)
Next
Return $sDecStr
EndFunc ;==>_BinaryToDec
|