很显然我们的邦布语由”嗯“和”呢“构成,恰好有两种形式,于是我们就可以考虑将汉字转换成二进制字符串,并分别将这些字符串使用嗯呢代替。
这样我们就可以科学地说邦布语了。
众嗦粥汁,我们计算机中的汉字编码形式一般使用Unicode中的utf−n编码。 而utf−8可以表示成16进制的形式,我们再将16进制转换为2进制,最后将0、1替换为"嗯"、"呢".
首先我们需要将汉字转换为16进制的字符串:
def string_to_hex_binary(unicode_string):
hex_binary_string = ""
for char in unicode_string:
unicode_code = ord(char)
hex_binary_string += f"{unicode_code:04x} "
return hex_binary_string.strip()
user_input = input()
hex_binary_result = string_to_hex_binary(user_input)
print( hex_binary_result)
16进制转2进制:
def hex_to_bin(hex_str):
return format(int(hex_str, 16), '04b')
def convert_hex_to_bin_spaced(hex_str):
hex_numbers = hex_str.split()
binary_str = ' '.join(hex_to_bin(num) for num in hex_numbers)
return binary_str
hex_str = input()
binary_str = convert_hex_to_bin_spaced(hex_str)
print(binary_str)
2进制转"嗯""呢":
binary_str = input()
translated_str = binary_str.replace("1", "嗯").replace("0", "呢")
print(translated_str)
综合一下:
#转成16进制
def string_to_hex_binary(unicode_string):
hex_binary_string = ""
for char in unicode_string:
unicode_code = ord(char)
hex_binary_string += f"{unicode_code:04x} "
return hex_binary_string.strip()
user_input = input()
hex_binary_result = string_to_hex_binary(user_input) #16进制数
#16转2
def hex_to_bin(hex_str):
return format(int(hex_str, 16), '04b')
def convert_hex_to_bin_spaced(hex_str):
hex_numbers = hex_str.split()
binary_str = ' '.join(hex_to_bin(num) for num in hex_numbers)
return binary_str
hex_str = hex_binary_result
binary_str = convert_hex_to_bin_spaced(hex_str) #2进制数
#二进制转嗯呢
translated_str = binary_str.replace("1", "嗯").replace("0", "呢")
print(translated_str)
input()
这里就直接上代码了:
#嗯呢转二进制
original_str = input()
converted_str = original_str.replace("嗯", "1").replace("呢", "0")
#二进制转十六进制
def bin_to_hex(bin_str):
bin_parts = bin_str.split()
hex_str = ""
for bin_part in bin_parts:
decimal_value = int(bin_part, 2)
hex_str += format(decimal_value, '02X') + " "
return hex_str.strip()
bin_str = converted_str
hex_str = bin_to_hex(bin_str)
#16转汉字
def hex_binary_to_string(hex_binary_string):
hex_groups = hex_binary_string.split()
unicode_string = ""
for hex_group in hex_groups:
unicode_code = int(hex_group, 16)
unicode_string += chr(unicode_code)
return unicode_string
hex_binary_result = hex_str
recovered_string = hex_binary_to_string(hex_binary_result)
print(recovered_string)
input()