bigbo
Прочитал через readln - вывел в шестнадцатиричном представлении считанное - сравнил с оригиналом
Применил функцию конверсии - вывел в шестнадцатиричном виде - сравнил с тем что должно получиться.
Иначе причин "левой" конверсии не найдешь. Когда найдется конкретный виновник сбоя, тогда уже можно будет пытаться искать какие либо пути решения.
Навскидку - наблюдаются операции прямого чтения в WideString. Гм. В официально неподдерживаемый компилятором тип строк. Причем, сильнейшим образом зависящий от корректности определения локали операционной системы и функций преобразования, зависящих от этой самой локали, которые периодически авторы компилятора имеют обыкновение приводить в неработоспособный вид и долго не восстанавливать. Читайте файл локаленезависимым образом, если что. Вплоть до открытия его в двоичном виде и побайтного считывания, если другим путем правильность преобразований при чтении не обеспечивается. Лишь только когда убедитесь, что считанная в память информация не испорчена, можно искать остальные источники искажений.