2015-04-02 4 views
0

У меня есть сокеты, отправляющие данные в строчном формате между 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

Знак '@' - это то, что отключает преобразование. Является первой частью «F» числа или может «безопасно игнорироваться» [F @]? – MattDMo

+1

Похоже, что преобразование между массивами Java и неверно; вы должны использовать 'Arrays.toString (float [])', а не 'float []. toString()'. Строка, которую вы получаете, выглядит бессмысленной. –

ответ

0

Если первые три символа data_in не относятся к строке шестнадцатеричных цифр, ваш срез должен быть data_in[3:]. Это будет игнорировать символы [[email protected] и просто конвертировать 5cf0ac6e.

Однако не требуется позвонить в float(). Вместо этого используйте:

value = int(data_in[3:], 16) 

поскольку любая информация с плавающей точкой теряется в любом случае с преобразованием в целое число. Параметр 16 равен int(), потому что вы конвертируете его из базы 16 (шестнадцатеричный).