bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)

Python 134 2017-11-07 09:48
好记性不如烂笔头

我要把刷题遇到的坑,各种知识点记下来-----By WhiteSwordSu


WinHex
刷题中必不可少的WinHex,我虽然会用,但根本不懂它,而今天我有了点点了解。

bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
WinHex.png

我打开一个藏有很多jpg的文件。左边是16进制的数据表示,右边对应的则是两位16进制数的ASCLL码值。

  • 4A为16进制数,一般记为0x4A。
  • 0x4A 16进制转换为10进制数是74,74的ASCLL码值为 J。
bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
进制与ASCLL.png

如我运行ipython所示。chr(int),将int按ASCLL表对应转为str。

bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
type1.png

现在我有一个test文件,文件中只写入了JFIF这4个字符。用winhex打开。

bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
test.png

接着我用python以read bytes的方式打开,并测试读出的内容和类型。

bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
open.png

若此时我要判断content是内容否是JFIF。则需要用到decode将content(bytes)解码成字符(str)进行比较。

bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
decode.png

而str转bytes则用 encode

额外的(文中内容非强转换类型,只是理解这些机制)

  • ord(str)将str转为ASCLL表对应的序号(只能是一个字符)。
bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
str转int(ascll).png
  • chr(int)将int转为ASCLL表对应的字符(0~255),超出的部分仍然可以转换为字符(非ASCLL)
bytes-str-int-ascll-学习笔记(各种转换让小白的我头晕)-JEESNS
int转str.png
文章评论