алгоритм число в строку

Предыдущая тема Следующая тема Перейти вниз

алгоритм число в строку

Сообщение  Eric-S в Пт Сен 18, 2009 7:20 am

Привет!

Я тут конкретно тупанул.
Не один раз писал этот алгоритм, даже ещё в школе на qbasic, дело было.

А вот сейчас сижу и торможу.
В смысле, он у меня какой-то большой и медленный получаеться.

Задачка простая. Нужно преобразовать число N из типа long в строковый буфер zstring ptr, с основанием e.
Не пойму, толи я сейчас стал слишком заумным, толи раньше какие-то неправильные мысли у меня бродили.
Короче свой исходник (рабочий) не прилагаю, чтобы не смущать (моим извращенством).

Функции val() не предлагать - сам знаю, что есть такая и что проще.

Если есть ассемблерный код, то с тщательным разжовыванием (комментированием) - у меня у самого их 5 штук, мелкие, но заразы непонятные.

Число целое, со знаком!
К стандартному виду приводить не нужно!

И кстати, win api есть? Не считая конечно wsprintf()?
На msdn не смог найти IntToStr для windows xp.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  tux в Пт Сен 18, 2009 4:13 pm

имхо только делить на 10 и брать от этого остаток, быстрее врятли получится, и асм тут врядли поможет, тк в десятичной системе счистения все делаеш
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  Eric-S в Пт Сен 18, 2009 8:10 pm

Система счисления задаёться переменной e.

Код:

function number_to_string( n as long, e as long ) as zstring ptr
dim buf as zstring ptr
buf = new zstring( 16 )




return buf
end function

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  tux в Сб Сен 19, 2009 4:41 pm

ну я думаю ето должно выглядеть примерно так
Код:

function number_to_string( n as long, e as long ) as zstring ptr
   const SIZE=16
   const ASC_NUM_0=48
   const ASC_SPACE=32
   dim buf as zstring ptr, i as integer
   buf=allocate(SIZE)
   for i=SIZE-2 to 0 step -1
      if n then
         buf[i]=(n mod e)+ASC_NUM_0
         n=int(n/e)
      else
         buf[i]=ASC_SPACE
      end if
   next i
   buf[SIZE-1]=0
   return buf
end function

print *number_to_string(127, 2)
print *number_to_string(12345, 10)
мона еще на выходе в асмоский файл глянуть, и повыкидывать мусор
avatar
tux

Сообщения : 365
Дата регистрации : 2008-04-06
Возраст : 29
Откуда : Сибирь

Посмотреть профиль http://tux.nsk.ru/

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  electrik в Сб Сен 19, 2009 7:15 pm

погляди функции на msdn
i64toa
ui64toa
i64tow
ui64tow
itoa
itow

electrik

Сообщения : 391
Дата регистрации : 2008-09-02
Возраст : 36
Откуда : галактика Млечный путь, система Солнечная, планета Земля, страна россия, город Санкт Петербург

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  Eric-S в Вс Сен 20, 2009 4:08 am

Ребята, спасибо вам большое!

Tux очень интересная идея, причом сильно отличаеться от моей.
Но похоже что по результативности эффект похожий.


На msdn сейчас загляну.
Я то искал Int64ToStrA. Ну и по ключевым словам.

Eric-S

Сообщения : 738
Дата регистрации : 2008-08-06
Возраст : 34
Откуда : Россия, Санкт-Петербург

Посмотреть профиль http://eric50.narod.ru

Вернуться к началу Перейти вниз

Re: алгоритм число в строку

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения