记录下对进制转换实现的重新思考。

扫描二维码扫到了一句垃圾话。

拖到winhex里面。

bugku 普通的二维码-LMLPHP

我是打算用python的libnum模块转换,所以我先把8进制转换为10进制,然后10进制转换为ascii

贴出代码

转化后的十进制数是:
122904376305381298193412913733165208999270088458846253109387416074993504924322568636802010235499192855449942901373

print(libnum(n2s(a)))发现报错。

为什么会报错呢?我一开始纠结这里,但是后来发现根本不用纠结这个地方。

来看两种情况的进制转换

你可以这么理解:这个得先转化为十六进制,然后十六进制每两个一组转化为ascii

这个事实102-f, 108-l

可以看出来这两种结果是不一样的,题目也是这样的。

你仔细观察的话,你会发现这个貌似是第二种情况,每三位数一组,然后分别代表一个ascii。

如果你像我一上来直接把这一大长串数转化为10进制的话,就破坏了他的数值了。

bugku 普通的二维码-LMLPHP

总结下来就是,不能一上来就脚本转换,得观察数的特点,不过这个题目也不给数之间加空格,确实容易犯这种错误

05-28 17:32