[2021铁人赛 Day12] General Skills 09

  • 引言
    昨天的题目学习到进位制以及「 ASCII code <-> 字元」转换,

    • 关於 Python 中的进位制前缀,可以简单列出下表:

      进位制 前缀
      二进制 0b (零+b)
      八进制 0o (零+小写英文字母o)
      十进制
      十六进制 0x (零+小写英文字母x)

      例:
      一个八进位数字 4562 表示成: 0o4562
      一个十六进位数字 ff75 表示成: 0xff75

      顺带一提这个包含字母的前缀+数字在 Python 中视为数字喔,
      如果你试着

      print(0x34)
      

      程序会印出 52 ,可见 Python 事实上会将其转成十进位数。

    • Python 中处理 ASCII code字元转换的方式刚好就两个函数:

      • chr() 昨天用到的,参数传入 ASCII code 後会将其转换为字元传回。
        e.g. print(chr(65)) 会印出 A
      • ord() 表示 ordinal (序数) ,会将字元转换成 ASCII code 。
        e.g. print(ord('b')) 会印出 98
  • General Skills / Warmed Up
    https://ithelp.ithome.com.tw/upload/images/20210927/20111429swq4p7mI8y.png
    这题马上就用到进位制了,题目要求16进位转10进位,
    所以写一个 python 档,用 int() 来转换:

    # base.py
    print(int('0x3d', base=16))
    

    int() 转换出来的必定是十进位整数

    这里写法很多种,
    因後面已指定 base 是16进位, 0x 就没有必要:

    print(int('3d', base=16))
    

    还有这种,
    base=0 表示自动判断,因为前面有 0x 就能得知是16进位:

    print(int('0x3d', base=0)) 
    

    int() 可填入数字字串,取决於用途,

    • 如果是用来小数整数,填入数字,如: int(3.14)
    • 如果是用来进制转换 (必转成10进位) ,有指定 base 的话 (包含 base=0) ,
      则需填字串,如: int('0b101', base=2)
      但如果不填入 base 则需填数字,如: int(0b101)

    执行:

    $ python base.py
    61
    

    将 61 用 flag 格式包住:
    picoCTF{61}


<<:  [机派X] Day 15 - 把你扳直!来校正飞行控制器吧!

>>:  Day27 过不去的槛就先绕过它 - LINE Notification

Re-architect - Domain Layer (二)

上一次介绍完了介面,今天就要来说说实作的部分了,从这里开始我要采取一种“小步快跑”的方式,原本 Ed...

Day.11 「利用渐变效果,让网页不再死板!」 —— CSS Transform & CSS Transition

现在我们会使用基本的伪类选择器做效果了,但看到变化过程一闪而过、冷冰冰的,想增添更多渐变效果,让动...

用新技术加强您的内部稽核-将稽核软件引入组织的 7 个步骤

在 2000 年代初期,内部稽核团队的典型工作重点是完成对特定财务和运营领域的传统周期性稽核——这一...

分散式资料库:一致性协定

基於讯息传递的一致性协定,只能保证资料的「最终一致性」,都无法处理「拜占庭将军问题(Byzantin...

Day 5【JavaScript】可以看到,将近是20公分的深度

【前言】 我的习惯是先在 Youtube 看完落落长的影片,然後才去 Coursera 看看有什麽...