Как преобразовать строку в целое число без использования int()

#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.