#python
Вопрос:
В основном то, что говорится в названии. Для моего назначения мне нужно создать функцию, которая принимает двоичный файл в строке, и я должен преобразовать его в десятичное целое число, но я не могу использовать int()
функцию. Однако я не знаю другого способа преобразования строки в целое число.
Комментарии:
1. Как вы думаете
int()
, что на самом деле реализовано? Возможно, он просматривает каждый символ строки?2. Вы делаете математику, по одной цифре за раз. С двоичной строкой все, что вам нужно, это что-то вроде
bit = 1 if str[i]=='1' else 0
.
Ответ №1:
Это длинный код, который работает:
def string_to_int(s):
rtr=0
for c in s:
rtr=rtr*10 ord(c) - ord('0')
return rtr
print(string_to_int("12445"))
вывод:
12445
Ответ №2:
Я нашел это в https://www.geeksforgeeks.org/how-to-convert-string-to-integer-in-python /
# User-defined function to
# convert a string into integer
def string_to_int(input_string):
output_int = 0
# Check if the number contains
# any minus sign or not,
# i.e. is it a negative number or not.
# If it contains in the first
# position in a minus sign,
# we start our conversion
# from the second position which
# contains numbers.
if input_string[0] == '-' :
starting_idx = 1
check_negative = True
else:
starting_idx = 0
check_negative = False
for i in range(starting_idx, len(input_string)):
# calculate the place value for
# the respective digit
place_value = 10**(len(input_string) - (i 1))
# calculate digit value
# ord() function gives Ascii value
digit_value = ord(input_string[i]) - ord('0')
# calculating the final integer value
output_int = place_value * digit_value
# if check_negative is true
# then final integer value
# is multiplied by -1
if check_negative :
return -1 * output_int
else:
return output_int
# Driver code
if __name__ == "__main__" :
string = "554"
# function call
x = string_to_int(string)
# Show the Data type
print(type(x))
string = "123"
# Show the Data type
print(type(string_to_int(string)))
string = "-123"
# Show the Data type
print(type(string_to_int(string)))
Ответ №3:
def binary_to_int(in_string):
result = 0
# the 'power' of the current binary digit
magnitude = 1
# look at each digit, starting from the right
for c in s[::-1]:
# only the 1 digits have value here
if c == "1":
result = factor
# after every digit, we go up a power
factor *= 2
return result
Не забудьте указать свои источники в формате Chicago.