:: Visual Foxpro, Foxpro for DOS
преобразование base36 в base10
lite

Сообщений: 1
Дата регистрации: 30.07.2017
Привет всем.
Написал функцию преобразования строки с числом с основанием 36 в десятичную, работает нормально - до 10 символов включительно, а с 11-го символа некорректно.
Понятно, что ошибка из-за разрядности.
Можно ли обойти в VFP?
Заранее спасибо, за любую помощь.

Тестовый пример:
? base36('XODXX3YYBEY')

123130000002255900, а правильный результат 123130000002255946

FUNCTION base36
LPARAMETERS b36
LOCAL b10, base_sys, i, ex, k
b10 = 0
base_sys = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
ex = 1
FOR i = LEN(b36) TO 1 STEP -1
k = AT( SUBSTR( b36,i,1 ), base_sys ) - 1
b10 = b10 + k * ex
ex = ex * 36
ENDFOR
RETURN b10
Ratings: 0 negative/0 positive
Re: преобразование base36 в base10
leonid
Автор

Сообщений: 3202
Откуда: Рига
Дата регистрации: 03.02.2006
forum.foxclub.ru



Исправлено 1 раз(а). Последнее : leonid, 30.07.17 18:31
Ratings: 0 negative/1 positive
Re: преобразование base36 в base10
Atlant

Сообщений: 204
Откуда: Новосибирск
Дата регистрации: 01.09.2005
А в обратную сторону? ) 10 в 36? )
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 10 PaulWist OlegA  (Гостей: 8)

© 2000-2024 Fox Club 
Яндекс.Метрика