[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

Day10,先来聊聊我的Kubernetes看法

正文 在开始建置之前,今天先来聊聊我自己对Kubernetes的想法,Kubernetes是一套co...

追求JS小姊姊系列 Day2 -- 谁说难搞的女生没朋友?

前情提要 先帮大家回味一下,第一天我说了些哪些内容: 之前跟她装熟很失败,现在决心要打掉重练 啊,可...

基础的Git上传方法与指令

1.以下程序码中有中文的,一律要更换成自己要的名字 2.程序码中有许多空格,请务必注意不要漏掉!! ...

[Cmoney 菁英软件工程师战斗营] IOS APP 菜鸟开发笔记(1)

前言: 这周被分配到报告MVC、MVP与MVVM三种专案架构的比较,尽管之前在课堂上听过老师提过三者...

第 29 型 - 单元测试 (Unit Testing)

在应用程序开发中,常会利用人工手动去测试系统的正确,不过当遇到较复杂的系统时,手动测试相对耗时且容易...