Как закодирован этот ввод пользователя? - PullRequest
2 голосов
/ 05 мая 2020

Какая кодировка / шифрование / манипуляция превратит следующие значения из того, что вы видите слева, в то, что справа?

  • 146.00 => 4046401A36E2EB1D
  • 36.30 => 4042266666666666
  • 76.22 => 40530E147AE147AE
  • 3865.20 => 40DA06683E8C7FD4
  • 0.200 => 3FC999999999999A

Я работаю с файлом XML из программного приложения, которое мы используем в работай. Я пытаюсь настроить инструмент, который помогает интерпретировать файлы XML и управлять ими вне программного обеспечения, чтобы можно было выполнять работу без ограничений, которые у нас есть. В программе пользователи заполняют поля и могут импортировать / экспортировать XML файлов, содержащих введенную ими информацию. Когда я открываю эти XML файлы в текстовом редакторе, все поля четко обозначены, как в самой программе. Однако данные, вводимые пользователем, «закодированы» (в надежде, что это точный термин), и они выглядят шестнадцатеричными. XML файл, хотя строки идут в обратном направлении (шестнадцатеричный код декодируется в «w im 9», когда пользователь вводит «9 mi w»). Однако все, что пользователь вводит как десятичное число, вызывает у меня проблемы [изменить: я определил, что проблема связана с полями, которые имеют связанные единицы]. Некоторое предварительное исследование привело меня к идее «атрибутов», но я не знаю достаточно XML, чтобы использовать / понять его. Ниже приведены две строки из XML, первая, где пользовательские данные воспроизводятся при попытке декодирования, а вторая, где что-то еще происходит:

<BRIDGE_ID HEX="true">#31</BRIDGE_ID> Здесь пользователь только что ввел "1" для идентификатора моста

<LENGTH Units="23" HEX="true">#3FD381D7DBF487FD</LENGTH> Здесь пользователь ввел «1» для длины, и программа перед экспортом установила его значение 1,00. Это поле в футах.

Я обнаружил, что поля, которые присваивают значения единицам, не меняются должным образом. Любое поле без единиц измерения, т.е. без атрибутов в XML, прекрасно работает в простом веб-декодере. Так что атрибуты как-то все усложняют. В первых 5 примерах вверху первое значение указано в футах (единицы = "23"), а во втором и третьем полях указаны градусы (единицы = "52").

Я знаю, что это повсюду! Спасибо всем, кто может понять это и помочь мне!

1 Ответ

0 голосов
/ 05 мая 2020

Для 2-го, 3-го и 5-го значений шестнадцатеричная строка 16-di git - это просто шестнадцатеричное представление внутреннего 64-битного значения с плавающей запятой IEEE двойной точности, десятичное представление которого отображается слева.

Это не работает для 1-го и 4-го значений, где шестнадцатеричная строка представляет собой представление 44,50 и 26649.628817677338 соответственно. Поскольку вы говорите о единицах измерения, возможно, потребуется преобразование американских единиц в метри c?

Этот вопрос не имеет ничего общего с XML. Тот факт, что данные заключены в теги XML, не делает их вопросом XML.

...