powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BigInteger
11 сообщений из 11, страница 1 из 1
BigInteger
    #32366394
BigInteger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Очень нужна функция которая будет преобразовывать массив байт в большое десятичное целое (в виде строки) и обратная функция

Может кто встречал?

Спасибо
...
Рейтинг: 0 / 0
BigInteger
    #32366412
oleg_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ни хера не понятно!
Какие входные данные какие выходные?
А что такое - большое десятичное целое (в виде строки)?
...
Рейтинг: 0 / 0
BigInteger
    #32366419
BigInteger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МАССИВ БАЙТ -- это некоторая область памяти фиксированной длины
БОЛЬШОЕ ДЕСЯТИЧНОЕ ЦЕЛОЕ -- десятичное число, занимающее объем памяти больше 8 байт (что соответствует Int64).
Т.к. в Delphi Нет поддержки больших встроенных типов (целочисленных), то такое число можно представить в привычном виде -- в виде строки.

Например:
8800143729631922405782002334063133501534435115162395064117426326331476687716325942802749888169355350802034821599707700628565614049986204387902189655430693 = $A80634DF67883190E551EA6C33EB0909F7E28FA16058DA8AAD628BBE6572FA9F534A66EB89D05EC9A0DA724040AAC60A3F487CCDB80C1DD713BEA398D6F216
25
(или
8800143729631922405782002334063133501534435115162395064117426326331476687716325942802749888169355350802034821599707700628565614049986204387902189655430693 = $2516F2D698A3BE13D71D0CB8CD7C483F0AC6AA404072DAA0C95ED089EB664A539FFA7265BE8B62AD8ADA5860A18FE2F70909EB336CEA51E590318867DF3406
A8 :) )

Входной параметр -- массив байт
Выходной параметр -- строка


2 oleg_e: надеюсь так понятно?
...
Рейтинг: 0 / 0
BigInteger
    #32366621
Фотография ziktuw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, тебе нужна арифметика больших чисел. Это сюда: http://triade.studentenweb.org/ -> GInt
...
Рейтинг: 0 / 0
BigInteger
    #32366634
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oleg_e прав. Редко встретишь такое бестолковое объяснения проблемы...:-)

Похоже, BigInteger, ты просто хотел узнать как из array of byte получить AnsiString. Так что ли? Но, судя по пространным твоим рассуждения, тебе действительно нужно просто проводить операции над массивом. (То, о чем сказал Dankov) Зачем переводить это к строке совсем непонятно... (Хотя сделать это элементарно. Если примитивно, то в цикле применить к каждому байту массива функцию chr)

С Новым Годом!!!
...
Рейтинг: 0 / 0
BigInteger
    #32366712
BigInteger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Dankov -- спасибо за ссылку. Ссылка просто супер!

2 Berg: Ну если не понятно что такое "БОЛЬШОЕ ДЕСЯТИЧНОЕ ЦЕЛОЕ" после всех объяснений.... то я даже не знаю как объяснить понятнее.

chr($FF) = 'я'
а мне надо 255 !

Попробуйте в Delphi объявить константу
Код: plaintext
x =  62395064117426326331476687716325942802749888169355350802034821599 



а так получится:
Код: plaintext
x  = '62395064117426326331476687716325942802749888169355350802034821599' 



Если вы что-то недопонимаете, не стоит говорить что это глупо - иначе то же самое смогут сказать о вас.
...
Рейтинг: 0 / 0
BigInteger
    #32366748
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2BigInteger:
Я не понял не это. Я не понял почему ты хочешь работать с "большими числами" в виде строки, а не, скажем, массива байт...

А насчет CHR - это только направление...Если ты ожидал исходников, то извини. Я имел ввиду примерно следующее:

Из массива байт:
получить строку примитивно можем так
x := '';
for i=1 to YLen
begin
x := x+chr(y +'0')
i := i+1;
end

Ну, а из строки
x = '62395064117426326331476687716325942802749888169355350802034821599'
получить массив байт
for i=1 to Length(x)
begin
y = ord(x)-ord('0');
i := i+1;
end
не сложно...

А то, что операции с такими числами проводить придется в столбик известно.

P.S. Извиняюсь, если с синтаксисом напутал. На паскале давно не писал.
...
Рейтинг: 0 / 0
BigInteger
    #32366754
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.P.S. Тебя спросили не что такое "большое десятичное целое", а что такое
"большое десятичное целое (в виде строки)" и даже выделили это красным цветом (см.второй пост)

А вообще, с Новым Годом!
...
Рейтинг: 0 / 0
BigInteger
    #32366817
BigInteger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BergЯ не понял не это. Я не понял почему ты хочешь работать с "большими числами" в виде строки, а не, скажем, массива байт...

В самом первом посте я сказал "большое десятичное целое".
По-моему абсолютно логично что если я говорю "десятичное", значит я хочу его видеть в десятичном виде а не в виде массива байт. В своем втором посте я уточнил почему меня не устраивают встроенные типы и почему я хочу видеть именно строку.

И вобще: этот форум не для того чтобы удрочить спрашивающего по поводу формулировок вопросов. Или это не так?

Если не нравится вопрос можно просто на него не отвечать.
...
Рейтинг: 0 / 0
BigInteger
    #32366853
Berg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2BigInteger:
Объясняю почему я ввязался в дискуссию...
Вы что-то невнятно сформулировали, а на уточняющий вопрос (пусть и немного грубоватый) от вас прозвучало издевательское " надеюсь так понятно?" на что хотелось ответить: "Нет, и так тоже непонятно"... Вы сами прочитайте еще раз определение упомянутого вами числа:
"БОЛЬШОЕ ДЕСЯТИЧНОЕ ЦЕЛОЕ -- десятичное число, занимающее объем памяти больше 8 байт". По-моему, просто смешно...Извините, если обидел...

> В самом первом посте я сказал "большое десятичное целое".
> По-моему абсолютно логично что если я говорю "десятичное", значит я хочу > его видеть в десятичном виде а не в виде массива байт.
Нет ничего абсолютного. Однако логика в этом действительно есть. Пожалуй под "десятичным числом" вполне можно было распознать его строковое представление. Имхо вы смешиваете понятия. Работать с этими числами вам будет удобнее в виде массива, а остальное надо лишь для представления результата...юзеру...Ну, или кому-то еще...

> И вобще: этот форум не для того чтобы удрочить спрашивающего по поводу > формулировок вопросов. Или это не так?
Нет, но иногда полезно...
> Если не нравится вопрос можно просто на него не отвечать.
Теперь уже не буду. Шампанское пора розливать...
...
Рейтинг: 0 / 0
BigInteger
    #32366859
oleg_e
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>И вобще: этот форум не для того чтобы удрочить спрашивающего по поводу формулировок вопросов. Или это не так?

Это так.
Я просто уточнил вопрос.
Нужно, наверное, что-то вроде этого:
массив (2,5,1,7,0,0,1) - строка '2517001' и наоборот.

А из вот этого:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Например: 
 8800143729631922405782002334063133501534435115162395064117426326331476687716325942802749888169355350802034821599707700628565614049986204387902189655430693  =
$A80634DF67883190E551EA6C33EB0909F7E28FA16058DA8AAD628BBE6572FA9F534A66EB89D05EC9A0DA724040AAC60A3F487CCDB80C1DD713BEA398D6F216 
 25  
(или 
 8800143729631922405782002334063133501534435115162395064117426326331476687716325942802749888169355350802034821599707700628565614049986204387902189655430693  =
$2516F2D698A3BE13D71D0CB8CD7C483F0AC6AA404072DAA0C95ED089EB664A539FFA7265BE8B62AD8ADA5860A18FE2F70909EB336CEA51E590318867DF3406 
A8 :) ) 

не совсем понятно, что нужно.
Ну да ладно.

>> BigInteger
Вопрос снят?

PS.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / BigInteger
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]