Antimonter
Окт. 22, 2012 22:19:55
Здравствуйте. Существуют способы решить эту проблему без написания новых функций?
P. S. Причина проблемы - необходимо записать шестнадцатеричное число в файл. В файл пишутся только строковые переменные.
dimy44
Окт. 22, 2012 22:26:33
open(path, “w”).write(hex(value))
odnochlen
Окт. 23, 2012 00:21:45
Antimonter
В файл пишутся только строковые переменные.
Так сделай их строковыми.
f.write(str(var))
#python 2
print >>f, var
bw
Окт. 23, 2012 03:33:19
Не понятно что требуется. В Python не существует “шестнадцатиричных” чисел. Кроме строк (str, unicode), есть целочисленные (int, long) и вещественные (float), ну такая хрень в отдельных моделях как numbers, decimal и fractions.
Можно целое преобразовать в строку, так что бы оно выглядело как hex, bin, oct и т.д., но это будет строка, а не число. Можно число преобразовать в байт (или в несколько), см. про `chr` и `struct`.
А что именно вам требуется и что вы имеете ввиду под “шестнадциричными числами” я, увы, не догоняю.
..bw
dimy44
Окт. 25, 2012 13:49:20
Все верно, но не углубляясь в детали, я так понимаю что человек хочет записать в файл скажем 0xff как ‘0xff’, а не ‘255’
>>> hex(0xff)
'0xff'
>>> str(0xff)
'255'
>>>
зачем и почему это уже другой вопрос.
dimy44
Окт. 25, 2012 14:27:25
Это и так строка
>>> type(hex(0xff))
<type 'str'>
>>>
но, как я уже выше писал, не ‘255’ (str(0xff)), а ‘0xff’