我刚刚开始了matasano安全挑战,并考虑同时学习IO。 所以现在,我仍然坚持挑战1,我需要将字符串转换为base64。
无论如何,我已经到了需要从二进制转换为十进制的地步,这是我的方法:
binToDec := method( bin, <-- program does not enter this method
dec := 0
rem := 0
i := 0
while ( bin != 0,
rem = bin % 10
bin = bin / 10
dec = dec + rem * 2 pow( i )
i = i + 1
)
return dec
)
toBase64Ascii := method( slice,
tmp := ""
for( a, 0, slice size, <-- construct a string to use with asNumber
tmp = tmp .. slice at( a )
)
dec := binToDec( tmp asNumber ) <-- the line that make the whole thing crash
)
for ( a, 0, bin size, 6,
tmp := toBase64Ascii( bin slice( a, a + 6 )
***some more code***
)
没有错误消息或任何内容,程序只是无限期挂起。
从文档中: asNumber 返回转换为数字的接收器。初始空格被忽略。
所以我必须说我在这里很困惑,发生了什么?
我本可以做更多的研究,但是对于谷歌来说,这是不可能的......
答案 0 :(得分:1)
我不确定binToDec
方法的预期输入和输出是什么,但是
while ( bin != 0, rem = bin % 10 bin = bin / 10 dec = dec + rem * 2 pow( i ) i = i + 1 )
可能是无限循环。 bin
是一个浮点数,重复除以10
,这并不意味着它到达0
。
我需要将字符串转换为base64。
请注意序列上有asBase64
和fromBase64
方法。