bugku 普通的二维码

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

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

拖到winhex里面。

OmoNLrz.png

一开始以为是十进制直接转ascii,发现错误。

后来发现,最大数是7,八进制转换吧。

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

贴出代码

import libnum
a='146154141147173110141166145137171060125137120171137163143162151160164137117164143137124157137124145156137101163143151151041175'
a=int(a,8)
print(a)

转化后的十进制数是:
122904376305381298193412913733165208999270088458846253109387416074993504924322568636802010235499192855449942901373

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

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

来看两种情况的进制转换

①十进制102108转化为text   

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

②十进制 102 108转化为text  

这个事实102-f, 108-l

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

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

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

INVPPNW.png

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

转载于:https://www.cnblogs.com/zaqzzz/p/10009688.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值