收官:同一个 200,走完全程

收官:同一个 200,走完全程

把这条路线的四件事一次做完:200 的二进制串、11001000 按八位补码读出来的值、200 的小端四字节、以及一个汉字在 UTF-8 下的字节数。

阅读更多 →
和 struct 对一遍账

和 struct 对一遍账

把上一题的 to_le 拿来,和 struct.pack 在四个数上逐一对比,再打出最大那个数的结果。

阅读更多 →
自己写:小端打包

自己写:小端打包

补全 to_le:取出低八位当第一个字节,右移八位,重复 k 次,拼成十六进制串。

阅读更多 →
自己写:算出每个字段的偏移

自己写:算出每个字段的偏移

依次摆放 1 字节、4 字节、2 字节三个字段,每个字段都要落在自己大小的整数倍上。输出三个偏移和总长度,用 / 拼起来。⚠️ 按 Python struct 的规矩,末尾不再补齐。

阅读更多 →
空出来的那几个字节

空出来的那几个字节

运行下面这段程序,填写它打印出来的结果。 import struct print(str(struct.calcsize("=ci")) + "/" + str

阅读更多 →
同一个数,两种排法

同一个数,两种排法

运行下面这段程序,填写它打印出来的结果。 import struct print(struct.pack("<I", 200).hex() + "/" +

阅读更多 →
为什么要对齐

为什么要对齐

结构体里的字段常常不是一个挨一个放的,中间会空出几个字节。这么做是为了【0】。

阅读更多 →
大端和小端差在哪

大端和小端差在哪

把 200 写进四个字节里,大端序和小端序的区别是【0】。

阅读更多 →
⚠️ 用错表,但一声不吭

⚠️ 用错表,但一声不吭

把一个汉字按 UTF-8 编码,却按 latin-1 解回来。它不会报错——看看它交出来的是什么。

阅读更多 →
编码再解码,还是原来那个字吗

编码再解码,还是原来那个字吗

补全 roundtrip:先按给定编码编成字节,再解回来。

阅读更多 →