大端和小端差在哪
把 200 写进四个字节里,大端序和小端序的区别是【0】。
为什么要对齐
结构体里的字段常常不是一个挨一个放的,中间会空出几个字节。这么做是为了【0】。
同一个数,两种排法
运行下面这段程序,填写它打印出来的结果。 import struct print(struct.pack("<I", 200).hex() + "/" + struct.pack("&
空出来的那几个字节
运行下面这段程序,填写它打印出来的结果。 import struct print(str(struct.calcsize("=ci")) + "/" + str(struct.calcsize(&qu
自己写:算出每个字段的偏移
依次摆放 1 字节、4 字节、2 字节三个字段,每个字段都要落在自己大小的整数倍上。输出三个偏移和总长度,用 / 拼起来。⚠️ 按 Python struct 的规矩,末尾不再补齐。
自己写:小端打包
补全 to_le:取出低八位当第一个字节,右移八位,重复 k 次,拼成十六进制串。
和 struct 对一遍账
把上一题的 to_le 拿来,和 struct.pack 在四个数上逐一对比,再打出最大那个数的结果。
收官:同一个 200,走完全程
把这条路线的四件事一次做完:200 的二进制串、11001000 按八位补码读出来的值、200 的小端四字节、以及一个汉字在 UTF-8 下的字节数。
在真机上怎么看一个数的二进制
在真机上想看一个整数的二进制表示,最直接的办法是【0】。 (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)
这个数二进制里有几个一
真机:python3 -c "print(bin(200))" 得到 0b11001000。这串里有几个 1? (判分只看你在受控容器里的真机产物,纯本机、纯 Python,没有 gcc。)