В Python 3.4 я использую winreg.QueryValueEx()
для получения значений ключа из реестра, чтобы сравнить его с текстовыми файлами. я столкнулся с проблемой, где REG_BINARY
значение ключа bytes
, но в нем есть юникоды:_winreg.QueryValueEx возвращает двоичное значение смешанной типизации
- Ожидаемое значение реестра ключ - 52 50 43 46 01 00 00 1b 00 и далее и далее Fe 04 46 00 6в 00 61 ...
- Возвращается значение ключа - б»RPCF \ x01 \ X1B \ x00 \ x00 \ x00 \ XFF \ XFE \ XFF \ x04F \ x00l \ x00a \ x00t \ x00 \ x00 \ п \ x00 \ x8b ... '(выделены жирным шрифтом некоторые проблемные значения)
- попробовал некоторые декодировать \ кодировать параметры, все из-за смешанного типа не удалось (например,
key_val.decode('utf-8')
{UnicodeDecodeError}'utf-8' codec can't decode byte 0xff in position 9: invalid start byte
)
Я использую возвращаемое значение, которое представляет собой шестнадцатеричные значения, в текстовый файл, содержащий ожидаемые шестнадцатеричные значения. Эти смелые значения не ожидаются, так как они не в шестнадцатеричном формате, и я не знаю их заранее, чтобы сделать некоторые обходные пути, чтобы их обрабатывать.
В Python 2.7 не было никаких проблем. Я предполагаю, что это связано с Python 3, разделяющим str
и или даже ошибкой в winreg в Python 3.
Поблагодарите за помощь и подсказку, чтобы объединить ее в один тип. Спасибо!
Почему вы считаете смелые значения проблематичными? Что вы пытаетесь сделать с возвращаемым значением, которое терпит неудачу? Вы можете узнать [Как задать хороший вопрос] (http://stackoverflow.com/help/how-to-ask) и создать [Минимальный, Полный и Подтверждаемый] (http://stackoverflow.com/help/ mcve). Это облегчает нам помощь. –
Я ожидал, что эти значения будут \ x52 \ x50 \ x43 \ x46 вместо RPCF, например, - все байты в том же формате. добавлена информация для моего использования возвращаемого значения. –
Эти значения на самом деле одинаковы. Вы просто видите артефакт о том, как python отображает строки по сравнению с байтами. –