Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Torari on March 21, 2014, 04:31:27 PM
-
Доброго времени суток. Нужен скрипт перевода чисел из шестнадцатеричной (HEX) в десятичную систему счисления (Dec). Скрипт желателен для кликермэна, чтобы использовать в другом скрипте кликермэна. Такое возможно? Но другие способы тоже приветствуются.
зы пофиксил "oct" = dec) сори
-
Привет!
Нет ли ошибки в вопросе?
HEX (hexadecimal) шестнадцатеричная система счисления.
OCT (octal) - восьмеричная, а не десятичная система.
DEC (decimal) - десятичная.
Пример: конвертируем шестнадцатеричное число "7DE" и получаем десятичное "2014". Это нужно?
Тогда просто, запускаем из Clickermann'а утилиту Марка Руссиновича "Hex2dec v1.0" (размер - 147 КБ) и выводим результат в переменную, в файл, в буфер обмена Windows или куда там еще нужно?
Hex2dec v1.0 - http://technet.microsoft.com/ru-ru/sysinternals/bb896736
Если это подходит, то написать скрипт несложно.
-
Вообщето кликерманн поддерживает шеснадцатириричные числа
Пример:
$a = 0x7de
LOGWRITE ($a)
HALT
В логе:
22:51:21 2014
-
Здорово! Спасибо. :)
Я не знал такого.
-
Atas, Oraven Спасибо за разъяснения :) Очень помогли )
зы
Да, в мануале написано про числа в шестнадцатиричном виде "Введение, Арифметика", не заметил. Забавно оказалось, что для HEX и Dec можно не переводить числа в единую систему счисления перед использованием в теле скрипта.
$a = 2014
$b = 0x7de
$d = $a + $b
print ($d) // $d = 4028
$a = 2014
$b = 0x7de
IF ($a = $b)
print ("$a и $b - одно и тоже число, но в разных системах счисления")
END_IF
-
Привет. Задача обратная, из Decimal в Hex.
Есть программа где нужно вбиать в Hex. Из буфера обмена Кликер вбивает десятинчые числа. Программа воспринимает десятичные как Hex.
Это не правильно. Сейчас буду делать костылёк, что переводит десятичные числа в Hex-строку...
-
Уже давно делал. В этих библиотеках http://crapware.aidf.org/forum/index.php?topic=1147.msg5166#msg5166
Файл hex.cms
Там перевод числа и одиночного символа.
-
Vint, спасибо, я примерно так же подумал.
Вот мой код для 3-х байтного 12-битного числа. Вместо побитовых сдвигов использовал деление на 2^4 и 2^8 . Оформить можно и красивее, мне лишь бы работало)
logclear
#ps2_keyboard
$var = inputbox("×èñëî", 0, 30)
print($var+0x0)
//3rd byte
$b3 = ($var & 0xF00) /256 // >> 8
print("b3 : ",$b3)
//2nd byte
$b2 = ($var & 0x0F0) /16 // >> 4
print("b2 : ",$b2)
//1st byte
$b1 = $var & 0x00F
print("b1 : ",$b1)
if($var > 4095)
print("Out of Range!") // 0x0F00
wait(666666)
halt
end_if
switch($b3)
case(0)
$str = strconcat($str,"0")
case(0x1)
$str = strconcat($str,"1")
case(0x2)
$str = strconcat($str,"2")
case(0x3)
$str = strconcat($str,"3")
case(0x4)
$str = strconcat($str,"4")
case(0x5)
$str = strconcat($str,"5")
case(0x6)
$str = strconcat($str,"6")
case(0x7)
$str = strconcat($str,"7")
case(0x8)
$str = strconcat($str,"8")
case(0x9)
$str = strconcat($str,"9")
case(0xA)
$str = strconcat($str,"A")
case(0xB)
$str = strconcat($str,"B")
case(0xC)
$str = strconcat($str,"C")
case(0xD)
$str = strconcat($str,"D")
case(0xE)
$str = strconcat($str,"E")
case(0xF)
$str = strconcat($str,"F")
default
print("Error in b3")
wait(66666666)
halt
end_switch
switch($b2)
case(0)
$str = strconcat($str,"0")
case(0x1)
$str = strconcat($str,"1")
case(0x2)
$str = strconcat($str,"2")
case(0x3)
$str = strconcat($str,"3")
case(0x4)
$str = strconcat($str,"4")
case(0x5)
$str = strconcat($str,"5")
case(0x6)
$str = strconcat($str,"6")
case(0x7)
$str = strconcat($str,"7")
case(0x8)
$str = strconcat($str,"8")
case(0x9)
$str = strconcat($str,"9")
case(0xA)
$str = strconcat($str,"A")
case(0xB)
$str = strconcat($str,"B")
case(0xC)
$str = strconcat($str,"C")
case(0xD)
$str = strconcat($str,"D")
case(0xE)
$str = strconcat($str,"E")
case(0xF)
$str = strconcat($str,"F")
default
print("Error in b2")
wait(66666666)
halt
end_switch
switch($b1)
case(0)
$str = strconcat($str,"0")
case(0x1)
$str = strconcat($str,"1")
case(0x2)
$str = strconcat($str,"2")
case(0x3)
$str = strconcat($str,"3")
case(0x4)
$str = strconcat($str,"4")
case(0x5)
$str = strconcat($str,"5")
case(0x6)
$str = strconcat($str,"6")
case(0x7)
$str = strconcat($str,"7")
case(0x8)
$str = strconcat($str,"8")
case(0x9)
$str = strconcat($str,"9")
case(0xA)
$str = strconcat($str,"A")
case(0xB)
$str = strconcat($str,"B")
case(0xC)
$str = strconcat($str,"C")
case(0xD)
$str = strconcat($str,"D")
case(0xE)
$str = strconcat($str,"E")
case(0xF)
$str = strconcat($str,"F")
default
print("Error in b1")
wait(66666666)
halt
end_switch
print($str)
wait(555555)
halt
-
Доброго дня.
У меня тоже вопрос по HEX -> DEC, в моей темке (http://crapware.aidf.org/forum/index.php?topic=5708.0 (http://crapware.aidf.org/forum/index.php?topic=5708.0)), ответили ссылкой сюда.
Ответа на свой вопрос не увидел.
Еще раз с позволения ТС, задам свой вопрос и тут.
Здравствуйте.
Тут потребовалось переводить текстовую строку с 256 битным HEX числом, в десятичное представление, тоже строковое.
Гуглю сижу, пока не нахожу вариантов.
Может быть кто подскажет ?
Переводить требуется вот такое 256 битное HEX число - b10d0462683a8331257608026ee89a6a88bf6f19069ed561
, в десятичное представление, должно получаться это - 4341274164759027778661610578089775696556146679647137879393
Всем известный способ :
0h751 => 7*16^2+5*16^1+1*16^0 => ...
я знаю, но, может быть есть что-то более быстрое и изящное ?
-
Здравствуйте.
Тут потребовалось переводить текстовую строку с 256 битным HEX числом, в десятичное представление, тоже строковое.
Гуглю сижу, пока не нахожу вариантов.
Может быть кто подскажет ?
Всем известный способ :
0h751 => 7*16^2+5*16^1+1*16^0 => ...
Этот способ для кликера не подойдёт. Или это не для кликера? Нужен или язык поддерживающий большие целые числа или реализовывать это самому.
Но это пипец как не просто и не быстро, проще вызвать из другого языка.
Просто интересно, а нафига переведить в десятичное число? Где это может использоваться? Обычно такие хэши это строки и строками всегда остаются.
-
Этот способ для кликера не подойдёт. Или это не для кликера? Нужен или язык поддерживающий большие целые числа или реализовывать это самому.
Но это пипец как не просто и не быстро, проще вызвать из другого языка.
Просто интересно, а нафига переведить в десятичное число? Где это может использоваться? Обычно такие хэши это строки и строками всегда остаются.
Здравствуйте.
Это для FreeBasic. Спросил тут, потому, что везде где можно спросил уже =(
Я написал программу для генерации биткоин адресов. Последним шагом, из HEX числа длиной 48 знаков (+00 в начале), нужно получить WIF-сжатый формат, принятый для написания адресов в сети BTC.
Далее написал получение WIF из десятичного числа, т.к. это фактически деление в столбик на 58 всего этого длинного числа (тоже в текстовом формате, т.к. не поддерживаются такие размерности) и запись остатков, которые и являются буквами из кодировки Base58.
Теперь либо писать перевод из HEX в DEC этого длинного чbслf, либо написать деление на 58 в HEX формате.
Уже начал писать перевод, в константы степени 16, до 48-й.
Умножение этих степеней на число из строки (в текстовом виде, в столбик) и сложение потом сорока восьми получившихся результатов, так же в тексте и в столбик.
Пипец, неужели проще никто не придумал =)))))))))))))
Этот бейсик задействует 1 ядро проца, у меня Ксеон с китая 24-поточный, 3.1 ГГц. на одну генерацию приблизительно получается 0.01-0.02 секунды, т.е. могу рассчитывать штук 30 генераций в секунду. Немного, т.к. хочу красивые адреса себе делать.
-
Неужели в языках так сложно с длинной арифметикой.
Вон в python всё просто, он это поддерживает изначально
(https://i.ibb.co/YD1TRXL/2022-08-19-08-05-05.png) (https://ibb.co/CJYs16H)
-
Неужели в языках так сложно с длинной арифметикой.
Вон в python всё просто, он это поддерживает изначально
Да, сложно с длиной, я об этом никогда не задумывался, пока не возникла поптребность ворочать большие числа.
Вчера вечером решил не продолжать писать перевод ХЕКС ту ДЕК, много времени очень получается лишнего. Уже написанное сохранил конечно, вдруг в будущем потребуется доделать и таки переводить.
Я делил длинное число, в текстовом формате конечно, на 58.
Думаю, лучше просто в HEX'е его делить и не плодить лишние вычисления.
Спасибо огромное всем кто принял участие в обсуждении и отдельно спасидо уважаемому Vint, Вы очень много раз мне помогали дельными советами.