找回密码
 加入
搜索
查看: 4161|回复: 10

[效率算法] 求教算法,顺序生成mac地址![已解决]

  [复制链接]
发表于 2011-12-25 12:09:43 | 显示全部楼层 |阅读模式
本帖最后由 tsys 于 2011-12-25 13:52 编辑

想生成mac地址如BC-AE-C5-BF-??-?? ,想让后四位顺序生成,其中包括0-9 A-F,不是随机生成哦,还请高手指教
发表于 2011-12-25 13:34:33 | 显示全部楼层
Local $time = TimerInit()

Local $str='BC-AE-C5-BF-'
For $a = 0 To 15
        For $b = 0 To 15
              For $c = 0 To 15
                        For $d = 0 To 15
                                $MAC = $str & StringFormat(_Num_to_Letter($a)) & StringFormat(_Num_to_Letter($b)) & '-' & StringFormat(_Num_to_Letter($c)) & StringFormat(_Num_to_Letter($d))
                                FileWriteLine(@ScriptDir & '\mac.txt', $MAC)
                        Next
                Next
        Next
Next

FileWriteLine (@ScriptDir & '\mac.txt', 'finished after ' & TimerDiff($time)/1000 & ' Seconds.')

Func _Num_to_Letter($num)
        Switch $num
                Case 10
                        Return 'A'
                Case 11
                        Return 'B'
                Case 12
                        Return 'C'
                Case 13
                        Return 'D'
                Case 14
                        Return 'E'
                Case 15
                        Return 'F'
                Case Else
                        Return $num
        EndSwitch
EndFunc


i3 2G内存的机器, 运行时间需要时间近 28秒了.
求速率的.

评分

参与人数 2金钱 +50 贡献 +5 收起 理由
tsys + 30 + 5 强悍!
afan + 20

查看全部评分

 楼主| 发表于 2011-12-25 13:51:18 | 显示全部楼层
强悍! 多谢user3000 指点
发表于 2011-12-25 13:54:51 | 显示全部楼层
强悍! 多谢user3000 指点
tsys 发表于 2011-12-25 13:51



    这是最基本的循环和字符串运用罢了.
    希望也多加油, 早点自如运用此类语句.
发表于 2011-12-25 14:07:07 | 显示全部楼层
i3 2G内存的机器, 运行时间需要时间近 28秒了.
求速率的.
user3000 发表于 2011-12-25 13:34


先申明个变量 $sOut = ''
第9行改为 $sOut &= $MAC & @CRLF
第15行改为 FileWrite(@ScriptDir & '\mac.txt', $sOut & 'finished after ' & TimerDiff($time)/1000 & ' Seconds.')

试试~

评分

参与人数 1金钱 +30 贡献 +5 收起 理由
tsys + 30 + 5

查看全部评分

 楼主| 发表于 2011-12-25 14:21:13 | 显示全部楼层
本帖最后由 tsys 于 2011-12-25 14:22 编辑

回复 5# afan
Local $time = TimerInit()
Local $sOut = ''
Local $str='BC-AE-C5-BF-'
For $a = 0 To 15
        For $b = 0 To 15
              For $c = 0 To 15
                        For $d = 0 To 15
                                $MAC = $str & StringFormat(_Num_to_Letter($a)) & StringFormat(_Num_to_Letter($b)) & '-' & StringFormat(_Num_to_Letter($c)) & StringFormat(_Num_to_Letter($d))
                                $sOut &= $MAC & @CRLF
                        Next
                Next
        Next
Next
 
FileWrite(@ScriptDir & '\mac.txt', $sOut & 'finished after ' & TimerDiff($time)/1000 & ' Seconds.')
 
Func _Num_to_Letter($num)
        Switch $num
                Case 10
                        Return 'A'
                Case 11
                        Return 'B'
                Case 12
                        Return 'C'
                Case 13
                        Return 'D'
                Case 14
                        Return 'E'
                Case 15
                        Return 'F'
                Case Else
                        Return $num
        EndSwitch
EndFunc
虚拟机512内存测试,I3 CPU  finished after 5.27156887258017 Seconds.
 楼主| 发表于 2011-12-25 14:33:46 | 显示全部楼层
回复 5# afan


    难道说,影响速率的主要原因就是第九行的循环内的filewriteline? A版积木玩的很好,学习了
发表于 2011-12-25 14:35:33 | 显示全部楼层
回复  afan


    难道说,影响速率的主要原因就是第九行的循环内的filewriteline? A版积木玩的很好, ...
tsys 发表于 2011-12-25 14:33


是的
Local $time = TimerInit()
Local $aStr[16] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'A', 'B', 'C', 'D', 'E', 'F']
Local $sOut = ''
Local $str = 'BC-AE-C5-BF-'
For $a = 0 To 15
        For $b = 0 To 15
                For $c = 0 To 15
                        For $d = 0 To 15
                                $sOut &= $str & $aStr[$a] & $aStr[$b] & '-' & $aStr[$c] & $aStr[$d] & @CRLF
                        Next
                Next
        Next
Next

FileWrite(@ScriptDir & '\macss.txt', $sOut & 'finished after ' & TimerDiff($time) / 1000 & ' Seconds.')

评分

参与人数 1金钱 +15 收起 理由
user + 15 很给力!

查看全部评分

发表于 2011-12-25 14:39:52 | 显示全部楼层
'finished after 3.0854824550937 Seconds."

确实如此, A版酷!
发表于 2011-12-25 14:46:24 | 显示全部楼层
回复 9# user3000


    8#还可以再快10倍左右~
发表于 2011-12-25 17:02:04 | 显示全部楼层
WOW 代码又简洁, 速度又快!
finished after 0.286735114017175 Seconds.
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-20 21:52 , Processed in 0.101108 second(s), 30 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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