# estimate.py —— 数制转换与存储容量估算验证脚本
# 单位约定:1 MB = 10^6 B,1 MiB = 2^20 B,1 GB = 10^9 B,1 GiB = 2^30 B
def show_num_systems():
print("=== 一、数制转换验证 ===")
b = '10110101'
print(f"int('{b}', 2) = {int(b, 2)}") # 期望 181
print(f"hex(255) = {hex(255)}") # 期望 0xff
print(f"bin(0x1A) = {bin(0x1A)}") # 期望 0b11010
print(f"int('1A', 16) = {int('1A', 16)}") # 期望 26
def photo_size(w=1920, h=1080, depth=24):
bits = w * h * depth
bytes_ = bits / 8
return bits, bytes_, bytes_ / 1e6, bytes_ / 2**20
def audio_size(minutes=4, sr=44100, bits=16, ch=2):
seconds = minutes * 60
bits_total = sr * bits * ch * seconds
bytes_ = bits_total / 8
return bits_total, bytes_, bytes_ / 1e6, bytes_ / 2**20
def video_size(hours=2, mbps=8):
seconds = hours * 3600
bits_total = mbps * 1e6 * seconds
bytes_ = bits_total / 8
return bits_total, bytes_, bytes_ / 1e9, bytes_ / 2**30
def iphone_shot_size(w=2868, h=1320, depth=24):
bits = w * h * depth
bytes_ = bits / 8
return bits, bytes_, bytes_ / 1e6, bytes_ / 2**20
def report(name, bits, bytes_, dec, bin_):
print(f"\n{name}: {bits:,} bit = {bytes_:,.0f} B "
f"≈ {dec:.2f} MB/GB ≈ {bin_:.2f} MiB/GiB")
if __name__ == '__main__':
show_num_systems()
print("\n=== 二、存储容量估算 ===")
report("1920×1080×24bit 未压缩照片", *photo_size())
report("4分钟 44.1kHz/16bit 双声道音频", *audio_size())
report("2小时 8Mbps 视频", *video_size())
report("iPhone 16 Pro Max 截图 2868×1320×24bit 未压缩", *iphone_shot_size())