У меня есть сокеты, отправляющие данные в строчном формате между java и python. Клиент python получает числа с плавающей запятой в строках, например. data_in = "[[email protected]"
, а затем пытается преобразовать их в целые числа с value = int(float(data_in[1:]))
. Однако python возвращает ошибку ValueError: could not convert string to float: [email protected]
. Как получить значения java-float для целых чисел в python? Благодаря!Разбор строки Java-поплавка в python int
0
A
ответ
0
Если первые три символа data_in
не относятся к строке шестнадцатеричных цифр, ваш срез должен быть data_in[3:]
. Это будет игнорировать символы [[email protected]
и просто конвертировать 5cf0ac6e
.
Однако не требуется позвонить в float()
. Вместо этого используйте:
value = int(data_in[3:], 16)
поскольку любая информация с плавающей точкой теряется в любом случае с преобразованием в целое число. Параметр 16
равен int()
, потому что вы конвертируете его из базы 16 (шестнадцатеричный).
Знак '@' - это то, что отключает преобразование. Является первой частью «F» числа или может «безопасно игнорироваться» [F @]? – MattDMo
Похоже, что преобразование между массивами Java и неверно; вы должны использовать 'Arrays.toString (float [])', а не 'float []. toString()'. Строка, которую вы получаете, выглядит бессмысленной. –