Author Topic: Из HEX в Dec  (Read 9004 times)

0 Members and 1 Guest are viewing this topic.

Torari

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Из HEX в Dec
« on: March 21, 2014, 04:31:27 PM »
Доброго времени суток. Нужен скрипт перевода чисел из шестнадцатеричной (HEX) в десятичную систему счисления (Dec). Скрипт желателен для кликермэна, чтобы использовать в другом скрипте кликермэна. Такое возможно? Но другие способы тоже приветствуются.

зы пофиксил "oct" = dec) сори
« Last Edit: March 21, 2014, 10:15:28 PM by Torari »

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Из HEX в Oct
« Reply #1 on: March 21, 2014, 09:45:30 PM »
Привет!
Нет ли ошибки в вопросе?
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
Если это подходит, то написать скрипт несложно.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Из HEX в Oct
« Reply #2 on: March 21, 2014, 09:53:53 PM »
Вообщето кликерманн поддерживает шеснадцатириричные числа

Пример:
Code: (clickermann) [Select]
$a = 0x7de
LOGWRITE ($a)
HALT

В логе:
Code: [Select]
22:51:21 2014

Atas

  • Активный участник
  • ***
  • Posts: 147
    • View Profile
Re: Из HEX в Oct
« Reply #3 on: March 21, 2014, 10:17:15 PM »
Здорово! Спасибо. :)
Я не знал такого.

Torari

  • Зашел в гости
  • *
  • Posts: 18
    • View Profile
Re: Из HEX в Dec
« Reply #4 on: March 22, 2014, 12:09:48 AM »
Atas, Oraven Спасибо за разъяснения :) Очень помогли )

зы
Да, в мануале написано про числа в шестнадцатиричном виде "Введение, Арифметика", не заметил. Забавно оказалось, что для HEX и Dec можно не переводить числа в единую систему счисления перед использованием в теле скрипта.
Code: [Select]
$a = 2014
$b = 0x7de
$d = $a + $b

print ($d)  // $d = 4028
Code: [Select]
$a = 2014
$b = 0x7de
   IF ($a = $b)

print ("$a и $b - одно и тоже число, но в разных системах счисления")

   END_IF

MIG29

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Из HEX в Dec
« Reply #5 on: August 17, 2015, 06:59:04 PM »
Привет. Задача обратная, из Decimal в Hex.

Есть программа где нужно вбиать в Hex. Из буфера обмена Кликер вбивает десятинчые числа. Программа воспринимает десятичные как Hex.
Это не правильно. Сейчас буду делать костылёк, что переводит десятичные числа в Hex-строку...

if_picture_in - зло

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Из HEX в Dec
« Reply #6 on: August 17, 2015, 10:49:51 PM »
Уже давно делал. В этих библиотеках http://crapware.aidf.org/forum/index.php?topic=1147.msg5166#msg5166
Файл hex.cms
Там перевод числа и одиночного символа.


MIG29

  • Освоившийся
  • **
  • Posts: 45
    • View Profile
Re: Из HEX в Dec
« Reply #7 on: August 17, 2015, 11:45:47 PM »
Vint, спасибо, я примерно так же подумал.

Вот мой код для 3-х байтного 12-битного числа. Вместо побитовых сдвигов использовал деление на 2^4 и 2^8 . Оформить можно и красивее, мне лишь бы работало)

Code: (clickermann) [Select]
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
« Last Edit: August 17, 2015, 11:51:51 PM by MIG29 »
if_picture_in - зло

putman

  • Активный участник
  • ***
  • Posts: 199
    • View Profile
Re: Из HEX в Dec
« Reply #8 on: August 18, 2022, 10:38:22 AM »
Доброго дня.
У меня тоже вопрос по HEX -> DEC, в моей темке (http://crapware.aidf.org/forum/index.php?topic=5708.0), ответили ссылкой сюда.
Ответа на свой вопрос не увидел.
Еще раз с позволения ТС, задам свой вопрос и тут.

Quote
Здравствуйте.
Тут потребовалось переводить текстовую строку с 256 битным HEX числом, в десятичное представление, тоже строковое.
Гуглю сижу, пока не нахожу вариантов.
Может быть кто подскажет ?

Переводить требуется вот такое 256 битное HEX число - b10d0462683a8331257608026ee89a6a88bf6f19069ed561
, в десятичное представление, должно получаться это - 4341274164759027778661610578089775696556146679647137879393

Всем известный способ :
Quote
0h751 => 7*16^2+5*16^1+1*16^0 => ...

я знаю, но, может быть есть что-то более быстрое и изящное ?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Из HEX в Dec
« Reply #9 on: August 18, 2022, 12:22:17 PM »
Quote
Здравствуйте.
Тут потребовалось переводить текстовую строку с 256 битным HEX числом, в десятичное представление, тоже строковое.
Гуглю сижу, пока не нахожу вариантов.
Может быть кто подскажет ?

Всем известный способ :
Quote
0h751 => 7*16^2+5*16^1+1*16^0 => ...
Этот способ для кликера не подойдёт. Или это не для кликера? Нужен или язык поддерживающий большие целые числа или реализовывать это самому.
Но это пипец как не просто и не быстро, проще вызвать из другого языка.

Просто интересно, а нафига переведить в десятичное число? Где это может использоваться? Обычно такие хэши это строки и строками всегда остаются.
« Last Edit: August 18, 2022, 12:25:23 PM by Vint »


putman

  • Активный участник
  • ***
  • Posts: 199
    • View Profile
Re: Из HEX в Dec
« Reply #10 on: August 18, 2022, 05:04:46 PM »
Этот способ для кликера не подойдёт. Или это не для кликера? Нужен или язык поддерживающий большие целые числа или реализовывать это самому.
Но это пипец как не просто и не быстро, проще вызвать из другого языка.

Просто интересно, а нафига переведить в десятичное число? Где это может использоваться? Обычно такие хэши это строки и строками всегда остаются.
Здравствуйте.
Это для 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 генераций в секунду. Немного, т.к. хочу красивые адреса себе делать.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Из HEX в Dec
« Reply #11 on: August 19, 2022, 08:11:30 AM »
Неужели в языках так сложно с длинной арифметикой.

Вон в python всё просто, он это поддерживает изначально


putman

  • Активный участник
  • ***
  • Posts: 199
    • View Profile
Re: Из HEX в Dec
« Reply #12 on: August 19, 2022, 10:31:05 AM »
Неужели в языках так сложно с длинной арифметикой.
Вон в python всё просто, он это поддерживает изначально
Да, сложно с длиной, я об этом никогда не задумывался, пока не возникла поптребность ворочать большие числа.
Вчера вечером решил не продолжать писать перевод ХЕКС ту ДЕК, много времени очень получается лишнего. Уже написанное сохранил конечно, вдруг в будущем потребуется доделать и таки переводить.
Я делил длинное число, в текстовом формате конечно, на 58.
Думаю, лучше просто в HEX'е его делить и не плодить лишние вычисления.
Спасибо огромное всем кто принял участие в обсуждении и отдельно спасидо уважаемому Vint, Вы очень много раз мне помогали дельными советами.