穿梭在数字王国:Python进制转换奇遇记
想象一下,你是一位勇敢的探险家,正在穿越神秘的"数字王国"。在这个王国里,不同的地区使用着不同的语言(或者说,进制)。二进制村的居民只懂"0"和"1";八进制镇的人们使用0到7的数字;而十六进制城的公民则熟悉0-9以及A-F这些符号。作为一名翻译官,你的任务是帮助这些不同地区的居民相互交流——这正是Python进制转换的真实写照!
一、认识数字王国的居民
在我们开始旅程前,先来认识一下这个王国的主要居民:
# 在数字王国,同一个数有不同的表示方式
the_number = 42 # 这是我们熟悉的十进制表示
# 在二进制村,它这样表示
binary_village = "101010" # (2^5 + 2^3 + 2^1 = 32 + 8 + 2 = 42)
# 在八进制镇,它是
octal_town = "52" # (5×8^1 + 2×8^0 = 40 + 2 = 42)
# 在十六进制城,它写作
hex_city = "2A" # (2×16^1 + 10×16^0 = 32 + 10 = 42)
王国的老者告诉你:“不同地区的表示方式不同,但本质上都是同一个数。理解了这点,你就掌握了进制转换的核心奥秘。”
二、十进制向其他地区的旅行(十进制转其他进制)
作为一名来自十进制王国的旅行者,你首先需要学会如何用其他地区的语言表达自己:
# 你想把十进制数42翻译成其他"语言"
decimal_num = 42
print(f"我在十进制王国的名字是: {
decimal_num}")
# 前往二进制村
binary = bin(decimal_num) # Python内置的翻译官
print(f"到了二进制村,我要自我介绍: {
binary}") # 输出: 0b101010
# 其中'0b'是二进制的标志,就像村口的路标
# 拜访八进制镇
octal = oct(decimal_num)
print(f"在八进制镇,我的名片写着: {
octal}") # 输出: 0o52
# '0o'是八进制的标志
# 游历十六进制城
hexadecimal = hex(decimal_num)
print(f"在十六进制城,我的通行证是: {
hexadecimal}") # 输出: 0x2a
# '0x'是十六进制的标志
有时候,你不想带着这些"标志"(0b, 0o, 0x),想要更融入当地文化:
# 去掉"外乡人"的标志,更像当地人
print(f"融入二进制村的生活: {
binary[2:]}") # 输出: 101010
print(f"像八进制镇居民一样说话: {
octal[2:]}") # 输出: 52
print(f"使用十六进制城的方言: {
hexadecimal[2:]}") # 输出: 2a
# 另一种方式是使用format()这位万能翻译官
print(f"二进制村的纯正口音: {
format(decimal_num, 'b')}") # 输出: 101010
print(f"地道的八进制镇方言: {
format(decimal_num, 'o')}") # 输出: 52
print(f"十六进制城的贵族说法: {
format(decimal_num, 'X')}") # 输出: 2A (大写更高贵)
三、回到十进制王国(其他进制转十进制)
当你收集了来自各地的信息,需要翻译回自己熟悉的语言:
# 一位二进制村的村民给你