📅  最后修改于: 2023-12-03 15:12:04.913000             🧑  作者: Mango
我们有一个二进制字符串,表示一个无符号整数,计算该整数的十进制数值。字符串中的字符仅为 '0' 或 '1'。
例如,字符串 "10101" 表示十进制数值为 21。
采用迭代法,从高位开始计算,每次将当前位的值乘以 2 的相应次幂即可。
例如,字符串 "10101" 中,最高位为 1,次高位为 0,依次类推。则该字符串的十进制数值为。
1 * 2^4 + 0 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 21
以下是 Python 代码实现:
def binary_to_decimal(binary_string):
"""
计算给定二进制字符串的十进制数值
:param binary_string: 给定的二进制字符串
:return: 十进制数值
"""
decimal_value = 0
length = len(binary_string)
for i in range(length):
if binary_string[i] == '1':
decimal_value += 2 ** (length - i - 1)
return decimal_value
为了验证我们实现的算法,需要进行测试。例如:
assert binary_to_decimal('10101') == 21
assert binary_to_decimal('11111111') == 255
assert binary_to_decimal('11001') == 25
上述算法可以很好地计算给定二进制字符串的分数,即十进制数值。并且经过测试,其功能是正确的。