Приведение в Python

Мне нужно преобразовать строки в Python в другие типы, такие как unsigned и signed 8, 16, 32 и 64-битные ints, Double, floats и strings.

Как я могу это сделать?

4 ответов


вы можете преобразовать строку в 32-разрядное целое число со знаком с :

str = "1234"
i = int(str)  // i is a 32-bit integer

если строка не представляет собой число, вы получите ValueError исключения. Обратите внимание, однако, что если строка представляет целое число, но это целое число не вписывается в 32-битный знак int, то вы фактически получите объект типа long вместо.

затем вы можете преобразовать его в другие ширины и signednesses с помощью некоторых простых математика:

s8 = (i + 2**7) % 2**8 - 2**7      // convert to signed 8-bit
u8 = i % 2**8                      // convert to unsigned 8-bit
s16 = (i + 2**15) % 2**16 - 2**15  // convert to signed 16-bit
u16 = i % 2**16                    // convert to unsigned 16-bit
s32 = (i + 2**31) % 2**32 - 2**31  // convert to signed 32-bit
u32 = i % 2**32                    // convert to unsigned 32-bit
s64 = (i + 2**63) % 2**64 - 2**63  // convert to signed 64-bit
u64 = i % 2**64                    // convert to unsigned 64-bit

вы можете конвертировать строки в плавающую точку с помощью float функция:

f = float("3.14159")

поплавки Python-это то, что другие языки называют double, т. е. 64-бит. В Python нет 32-битных поплавков.


следующие типы -- по большей части -- не существуют в Python в первую очередь. В Python строки преобразуются в ints, longs или floats, потому что это все, что есть.

вы просите преобразования, которые не имеют отношения к Python в первую очередь. Вот список типов, которые вы просили, и их эквивалент Python.

  • без знака и подписи int 8 бит,int
  • неподписанные и подписанные биты int 16, int
  • unsigned и signed int 32 бита, без знака:долго, подписанного int
  • unsigned и signed int 64 бит,долго

  • дважды, float

  • поплавок, float
  • строку это то, с чего вы должны были начать

Я не знаю, что следующее, Поэтому я не знаю В Python эквивалентно.

  • без знака и подписи 8 бит,
  • без знака и подписи 16 бит,
  • без знака и подписи 32 бит,
  • беззнаковый и подписанный 64 бит.

У вас уже есть все преобразования, которые имеют значение:int(), long() и float().


Python имеет только один int тип. Чтобы преобразовать строку в int используйте int() такой:

>>> str = '123'
>>> num = int(str)
>>> num
123

Edit: также для преобразования в float, использовать float() точно так же.


Я не думаю, что на это можно ответить хорошо без дополнительной информации. Как говорили другие, в python есть только int и long для целых чисел-язык не придерживается архетипов битовой ширины и значимости языков программирования более низкого уровня.

Если вы работаете полностью в python, то вы, вероятно, задаете неправильный вопрос. Вероятно, есть лучший способ сделать то, что вам нужно.

Если вы взаимодействуете, например, с C код, или по сети, то есть are способы сделать это, и похоже, что ответ на ваше предыдущее сообщение покрыл этот проспект довольно удобно.