Я думаю, что комментарий на ваш вопрос об использовании парсера JSON лучше всего, за которым следует простой ответ fhdhsni. Но вот метод, который извлекает числа, а не заменяет скобки:
str = "[40.45694301152436, -3.6907402812214514]"
regex = ~r/([\d\.-]+), ([\d\.+-]+)/
Regex.run(regex, str, capture: :all_but_first) |> Enum.map(&String.to_float/1)
Вывод:
[40.45694301152436, -3.6907402812214514]
Пакеты UDP используют контрольную сумму на 16 битов. Для пакетов UDP не невозможно иметь повреждение, но это довольно маловероятно. В любом случае это не более восприимчиво к повреждению, чем TCP.
В первую очередь, "контрольная сумма IP, на которую" ссылаются выше, является только контрольной суммой заголовка IP. Это не защищает полезную нагрузку. Посмотрите RFC 791
, Во-вторых, UDP позволяет транспорт без контрольной суммы, что означает, что 16-разрядная контрольная сумма установлена на 0 (т.е., ни один). Посмотрите RFC 768. (Весь нуль передал средства значения контрольной суммы, что передатчик не генерировал контрольной суммы)
, В-третьих, как другие упомянули, UDP имеет 16-разрядную контрольную сумму, которая не является лучшим способом обнаружить многоразрядную ошибку, но не плоха. Это, конечно, возможно для необнаруженной ошибки красться в, но очень вряд ли.
Возможный? Абсолютно. Необнаруженный? Маловероятный , так как UDP использует контрольную сумму, которая потребовала бы нескольких разрядных ошибок казаться допустимой. Если ошибка будет обнаружена, система, вероятно, отбросит пакет - такой, риски использования UDP.
Пакеты UDP могут также быть поставлены не в порядке, поэтому при разработке протокола сверху UDP, необходимо принять это во внимание также.
Стандартная форма "повреждения", которое влияет на не подозревающих программистов, усечение дейтаграммы . См. "Сетевое программирование Unix", Stevens для получения дополнительной информации (страница 539 в 2-м редакторе)
Вы могли бы проверить флаг MESSAGE_TRUNC...