Приведение в 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 способы сделать это, и похоже, что ответ на ваше предыдущее сообщение покрыл этот проспект довольно удобно.