找回密码
 加入
搜索
查看: 1994|回复: 4

[效率算法] 求助,按位反方向读取二进制数,怎么做?

[复制链接]
发表于 2016-3-15 17:49:10 | 显示全部楼层 |阅读模式
例如
将0xADE1
1010 1101 1110 0001
变成0x87B5
1000 0111 1011 0101
有大神知道吗?
 楼主| 发表于 2016-3-15 18:09:00 | 显示全部楼层
回复 1# sh2288
注意
返回值
是hex值,不是文本string值
 楼主| 发表于 2016-3-15 18:09:54 | 显示全部楼层
回复 1# sh2288
注意
返回值
是hex值,不是文本string值
现在我可以返回87b5,但是是string值
怎么变为hex值?
发表于 2016-3-16 10:20:46 | 显示全部楼层
Dim $num1 = 0xADE1
Dim $num2 = 0x87B5
ConsoleWrite(_NumberToBinary($num1) & @CRLF)
ConsoleWrite(_NumberToBinary($num2) & @CRLF)

Func _NumberToBinary($iNumber)
        Local $iTopBit, $sBinString = ""
        If $iNumber < -2147483648 Or $iNumber > 4294967295 Then Return SetError(1, 0, "")
        If $iNumber > 2147483647 Or $iNumber < 0 Then
                $iTopBit = 1
        Else
                $iTopBit = 0
        EndIf
        Local $iUnsignedNumber = BitAND($iNumber, 0x7FFFFFFF)
        Do
                $sBinString = BitAND($iUnsignedNumber, 1) & $sBinString
                $iUnsignedNumber = BitShift($iUnsignedNumber, 1)
        Until Not $iUnsignedNumber
        Return StringRegExpReplace($iTopBit & StringRight("000000000000000000000000000000" & $sBinString, 31), "(?m)^0+", "")
EndFunc   ;==>_NumberToBinary
 楼主| 发表于 2016-5-13 08:52:30 | 显示全部楼层
回复 4# haijie1223
强~~~!
大神
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-24 08:14 , Processed in 0.112826 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表