PDA

Показать полную графическую версию : [решено] dec2hex|ascii


semiono
13-02-2009, 04:10
Есть ли способ перевода данных ЦЫФРЫ в HEX? ну и с дальнейшим применением в скриптах?
Я сначала не мог прочитать в реестре нечто такое data REG_SZ 000020020030004444405550...
Но с помощью WinHex прочитал этот дамп и теперь возник вопрос, как самому корректно записать туда свой код?
Например, как записать туда скажем C:\MyProg\bin в виде кодов символов в обычный REG_SZ

То-есть задача такова что где-то в скрипте мы считываем или получаем данные $Path, в обычном виде, скажем C:\progs
но потом это надо уже переписывать в виде дампа цыфр, чтоб вписать в реестр уже как REG_SZ "ЦЫФРАМИ ЭТИХ КОДОВ..."

offtop: кодами этих кодов или цыфрами этих цыфр )))
однако мысль сложная, поэтому я как смог высказал :)
?

Creat0R
13-02-2009, 07:09
Для конвертирования цифр в хекс-код, есть функция, называется (как ни страннно) Hex() :) .

Для конвертирования в бинарный код обычной строки, используется StringToBinary():


$sPath = "C:\Path"

ConsoleWrite("Original string: " & $sPath & @CRLF)

$nHex = StringToBinary($sPath)
ConsoleWrite("StringToBinary: " & $nHex & @CRLF)

$nStr = BinaryToString($nHex)
ConsoleWrite("BinaryToString: " & $nStr & @CRLF)

semiono
13-02-2009, 21:01
Hex() »
Еслиб я был более благоразумным, мог бы сам найти в хелпе :)
Но хорошо что были эти функции, я так и подозревал, ато иначе самому написать пришлось бы,
что-то типа перевода таблицы символов! Фиг бы кто это осилил :)

semiono
14-02-2009, 03:13
Арифметика нужна!
Первая проблема это шеснадцатиричный индекс

$sPath = "C:\zz"

$nHex = StringToBinary($sPath)
RegWrite("HKLM\Software\a","z","REG_SZ",$nHex)

Получаем 0x433A5C7A7A, из чего конечно 0x нам не нужен.
Причём я не знаю как это убрать даже логически, если бы в конце то хотяб как $nHex - 2
ито я даже корректно не соображу как это делается... Были бы сдвиговые операции как в ассемлере! :)

Ну и ещё хотелось бы на будущее записывать эти данные в середину строки, например
RegWrite("HKLM\Software\a","z","REG_SZ", {olddata} & $nHex & {olddata} )

где olddata - какие-то записи которые надо оставить не тронутыми.

Тут видимо надо как-то с переменными с арифметикой поработать...

Например, в реестре valuename имеет значение 123456789, и нам надо изменить это значение
с 4-го по 7-й знак, что конечно сложнее чем просто RegWrite()
?
У меня какраз ситуация где в одном параметре реестра именно в таком виде, сначало идут "статичные" записи, а далее путь и всё в одну строку...

semiono
14-02-2009, 14:25
Как же убрать 0x из значения переменной 0x433A5... Если я может непонятно написал, я поясню?!...

Creat0R
14-02-2009, 14:48
Были бы сдвиговые операции как в ассемлере! »
String*() не устраивает?

P.S
Справка+поиск (в ней и не только) я вижу вам не по душе...

semiono
15-02-2009, 11:37
Справка+поиск »
Честное слово, скажу всётаки! Многие юзеры могут убить за одну установку Неро, в котором вместо кнопочки Записать есть кнопка Burn, и таких валом кругом! Мне же досталось читать про рег экспы, примеры которых изобилуют логическими построениями типа While Then Do, когда сами регулярные выражения и без того трудно на ум ложаться и вдобавок ещё на английском языке. И вот когда именно я влез в регексп код, мне прикрыли кислород помощи, и именно почему-то в этот момент.
:)
Но я понял, что именно с этого места и надо вообще автоит изучать! Инфы достаточно, но трудно всётаки.




© OSzone.net 2001-2012