Сейчас на форуме: hgdagon (+5 невидимых)

 eXeL@B —› Программирование —› Простую задачу трудно решить...
Посл.ответ Сообщение


Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 02 августа 2007 20:56
· Личное сообщение · #1

Имею в edit:='24856283725065382647';
Как свести в 16-ную систему исчисления?
Число из 19-ти значащих цифр,получается правильно.Проверял в калькуляторе.
Больше чем 19,чё то не получается.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 221.3 (наставник), 135thx
Активность: 0.190.07
Статус: Участник

Создано: 02 августа 2007 21:03
· Личное сообщение · #2

Bronco
Тебе функцию перевода из DEC в HEX тчоле надо?

-----
xchg dword [eax], eax




Ранг: 161.0 (ветеран)
Активность: 0.120
Статус: Участник

Создано: 02 августа 2007 21:07 · Поправил: kaiZer
· Личное сообщение · #3

var
texteg,hexeg:string;
i,ordeg: Integer;
begin
texteg:=Edit1.Text;
for i:=1 to len do
begin
ordeg:=Ord(texteg[i]);
hexeg:=hexeg+inttohex(ordeg);
end;

//вот так вот правильнее




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 02 августа 2007 21:10
· Личное сообщение · #4

А если старинным ручным способом - делением числа на основание системы счисления?




Ранг: 328.7 (мудрец), 73thx
Активность: 0.170.01
Статус: Участник

Создано: 02 августа 2007 21:24
· Личное сообщение · #5

58F3 425A 8CD8 6AF7
калькулятор выдал




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 02 августа 2007 21:34
· Личное сообщение · #6

r99 пишет:
калькулятор выдал

Прикинь!Мне тоже...
v0id2k пишет:
из DEC в HEX

Да есть,нашёл на одном из форумах в сети,он из 10-ной в любую сводит,только укажи(1-36).Но предел 19 значное число.
Там надо div и mod,переписывать.А где они не знаю

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 387.4 (мудрец)
Активность: 0.170
Статус: Участник
системщик

Создано: 02 августа 2007 21:53 · Поправил: s0larian
· Личное сообщение · #7

01 58f3425a 8cd86af7

тут больше чем 64 бита Тебе надо написать (или лучше выдернуть откуда-нить) кусок кода для операций с большими числами. Такие числа хранятся в памяти в родном 16-ричном формате и переводится в 10-тичную делением.




Ранг: 1288.1 (!!!!), 273thx
Активность: 1.290
Статус: Участник

Создано: 02 августа 2007 21:54
· Личное сообщение · #8

может, просто заюзать либу для работы с большими числами?




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 02 августа 2007 22:13
· Личное сообщение · #9

Да я бы выдрал.Откуда?
Типа того что я юзаю:
procedure TfrmSuka.Button3Click(Sender: TObject);
var
i:int64;
begin
i:=StrToInt64Def(edit3.Text,0);
If i=0 then
edit3.Text:='Число имеет больше 19 значащих цифр';
if i>0 then
edit3.Text:=Dec2X(i,16);
Button3.Enabled:=false;
end;
-----------
В атаче либа(откоментированная не мной),19 сводит чётко,надо доводить до ума.Ума нет,уже припарился

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 02 августа 2007 22:22 · Поправил: Bronco
· Личное сообщение · #10

kaiZer пишет:
for i:=1 to len do

len - это length?
И Я так понимаю что texteg
Поправил,но у меня и тут тормоза:
hexeg:=hexeg+inttohex(ordeg);
Лады,поправил типа так:
hexeg:=hexeg+inttohex(ordeg,8);
Компильнулось.
В эдите имею десятичное счисление.
Забыл приатачить
Там просто функа рипнутая.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 02 августа 2007 22:32
· Личное сообщение · #11

аттач

396b_02.08.2007_CRACKLAB.rU.tgz - decToMax36.rar

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 161.0 (ветеран)
Активность: 0.120
Статус: Участник

Создано: 02 августа 2007 23:03
· Личное сообщение · #12

Bronco
У меня все нормально конвертится... Все хорошо пашет и не томозит
а len - это length



Ранг: 309.8 (мудрец), 21thx
Активность: 0.170
Статус: Участник

Создано: 02 августа 2007 23:03
· Личное сообщение · #13

fgint в руки

-----
Shalom ebanats!





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 августа 2007 00:13
· Личное сообщение · #14

kaiZer
Да я верю
У меня D7,если не выправлю len,и inttohex,даже не компилиться.
Скинь плиз,в аттаче *.pas от сорца твоего.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 03 августа 2007 06:13 · Поправил: sotona
· Личное сообщение · #15

вот, только что написал
http://the-matrex.nm.ru/dec_to_hex.zip http://the-matrex.nm.ru/dec_to_hex.zip

комментарии к исходнику:
1) если возможно, лучше обойтись работой с целыми числами типа Int64 (long long)
2) сам алго поддерживает десятичные строки любой длины.
3) алгоритм может быть в разы ускорен, и я знаю в каком направлении работать. кто разберется в коде, поймет. в принципе, смотря для какой задачи использовать. если больших скоростей не надо, то самое то.
4) на C это можно было бы выразить более красиво




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 03 августа 2007 10:26
· Личное сообщение · #16

sotona
Золотые руки...Низкий поклон.

-----
Чтобы юзер в нэте не делал,его всё равно жалко..





Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 04 августа 2007 03:54
· Личное сообщение · #17

повседневное:

77f6_03.08.2007_CRACKLAB.rU.tgz - Everyday.rar

-----
Чтобы юзер в нэте не делал,его всё равно жалко..




Ранг: 61.7 (постоянный), 12thx
Активность: 0.090.02
Статус: Участник

Создано: 04 августа 2007 15:08
· Личное сообщение · #18

Я думаю, легко написать конвертер самому- время столько же убьешь
ЗЫ. чето я ваще бухой



Ранг: 158.7 (ветеран)
Активность: 0.110
Статус: Участник

Создано: 04 августа 2007 18:40
· Личное сообщение · #19

Gerpes пишет:
конвертер самому- время столько же убьешь
ЗЫ. чето я ваще бухой

Так лучше бы промолчать об этом.
А если ты напишешь необходимые функи быстрее чем я юнит подключу к проекту - большой тогда тебе респект и уважуха.

-----
Я ещё не волшебник, я только учусь...




Ранг: 113.4 (ветеран)
Активность: 0.130
Статус: Участник
Ветеран

Создано: 04 августа 2007 19:43
· Личное сообщение · #20

Ara пишет:
А если старинным ручным способом - делением числа на основание системы счисления?

Во-во, так и надо. А то совсем народ обленился...Всё им в готовом виде надо.

-----
моя подпись!




Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 августа 2007 09:12
· Личное сообщение · #21

locker_fx пишет:
Во-во, так и надо. А то совсем народ обленился...Всё им в готовом виде надо.

помоему ты не проникнулся сутью проблемы. о хранении больших чисел.
а так - да, надо собирать остатки от деления на основание. только само деление еще реализовать надо ))



Ранг: 51.0 (постоянный)
Активность: 0.030
Статус: Участник

Создано: 05 августа 2007 09:35
· Личное сообщение · #22

18446744073709551615 - последнее 20-значное число, которое можно в Int64 запихать.




Ранг: 312.0 (мудрец), 349thx
Активность: 0.460.65
Статус: Участник
Advisor

Создано: 05 августа 2007 10:10
· Личное сообщение · #23

sotona
Да и на выходе предел точности тоже есть.
Вот если хочешь посмотри,нарыл в сети для большизх чисел модули

594f_05.08.2007_CRACKLAB.rU.tgz - vln.zip

-----
Чтобы юзер в нэте не делал,его всё равно жалко..



 eXeL@B —› Программирование —› Простую задачу трудно решить...
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати