, поэтому я работаю над назначением кодирования/декодирования для перехода на передний план для разработки программного обеспечения и при использовании встроенной функции ord() с Python 3.3 кажется, что оно возвращает неправильное значение на определенный момент в моем коде.python ord не работает как ожидалось
Когда мы хотим кодировать номер кодировки от 1-120, мы просто добавляем этот кодовый номер в 128. Для чисел от 121 до 375 мы используем два байта, первый из которых является F9, означающим, что следующий один байт является частью номер кода, а второй - фактический номер кода (закодированный кодом № - 128). Так, например, 121 будет F9 00.
При декодировании я столкнулся с проблемой, когда после чтения в F9 и перехода в код для декодирования второго байта я столкнулся с проблемой с функцией ord.
Мой код:
def decode_num(base_num, input_file):
if base_num <=248:
#coding for if the code is simply a one byte code from 1-120(will have been coded as 248)
return base_num-128
elif base_num == 249:
#coding for if the code is a two byte code, thus the first byte of the code will be 121
second_byte=ord(input_file.read(1))
return second_byte+121
Это, кажется, работает хорошо, пока он не достигнет кодирования для 134, который должен быть F9 0D. Вызов ord (input_file.read (1)) возвращает 10 вместо 13, как и следовало ожидать. Я подтвердил, что в файле mtf, который я пытаюсь декодировать, hexdump показывает F9 0D, где я сталкиваюсь с проблемой. С текущим тестовым случаем я работаю через него только с 0D в качестве второго байта двух байтового кода. 0C и обратно работают нормально, а 0E и впереди все работают нормально.
Любые идеи в отношении того, что может быть причиной этого? Или альтернативные идеи для декодирования двух байтового кода?
Редактировать: Я забыл упомянуть, что файлы mtf будут закодированы в латинском-1. Если это имеет значение.
Вы используете Windows? – jedwards
Написание кода на окнах, но фактически его запуск на CentOS 7 (это то, что установлено на лабораторных компьютерах, с которыми я дистанционно подключаюсь). Я забыл добавить, что файлы mtf закодированы в латинском-1, я обновлю вопрос. –
Были созданы файлы, которые вы пытаетесь прочитать, были ли они созданы в Windows или CentOS? – jedwards