powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как из 10-ричной в 36-ричную систему счисления преобразовать?
8 сообщений из 8, страница 1 из 1
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32545940
Forzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как из 10-ричной в 36-ричную систему счисления преобразовать?
Есть какие-нибудь в фоксе штатные средства? Или функцию писать? Подкиньте алгоритмик, у кого есть....
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546007
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это для 16-ричной системаы. Как переделать для 36 - немножко напрягите мозг - это очень просто:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
*
*  convert from bin, oct, hex to decimal
*
FUNCTION BinDecHex2Dec
LPARAMETERS tcHexValue AS STRING, tnBasis AS Intger
LOCAL lnI AS INTEGER
LOCAL lnResult AS LONG
#DEFINE C_RANGE_HEX "0 1 2 3 4 5 6 7 8 9 A B C D E F"
#DEFINE C_RANGE_DEC " 0 1 2 3 4 5 6 7 8 9101112131415"
lnResult =  0 
FOR lnI =  1  TO LEN(tcHexValue)
  lcValue = SUBSTR(tcHexValue, lnI,  1 )
  lnPosHex = AT(UPPER(lcValue), C_RANGE_HEX)
  lnDecValue = VAL(SUBSTR(C_RANGE_DEC, lnPosHex,  2 ))
  IF lnDecValue > tnBasis
    RETURN  0 
  ENDIF
  lnResult = lnResult * tnBasis + lnDecValue
ENDFOR
RETURN lnResult
ENDFUNC
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546008
XAndy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
*----------------------------------------------------------------------------
* Перевод десятичного числа в указанную систему исчисления
*----------------------------------------------------------------------------
* iDec - десятичное целое число
* iBase - основание системы исчисления (от 2 до 36)
* Возвращается строка
*----------------------------------------------------------------------------
lparameters iDec, iBase
local cHex, iRest, aHex
aHex = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
cHex = ""

do while iDec>0
iRest = iDec % iBase
iDec = (iDec - iRest) / iBase
cHex = substr(aHex, iRest+1, 1) + cHex
if between(iDec, 1, iBase-1)
cHex = substr(aHex, iDec+1, 1) + cHex
exit
endif
enddo

return cHex
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546012
Раз (1)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Штатных нет наверно :)
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546078
Forzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Выручили!
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546286
Forzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Затупил я, как сделать, чтоб нули впереди возвращаемого значения не убирались? ну к примеру ввожу я 26 должно возвратить 000Q, а возвращает Q
вот в этом примере:

*----------------------------------------------------------------------------
* Перевод десятичного числа в указанную систему исчисления
*----------------------------------------------------------------------------
* iDec - десятичное целое число
* iBase - основание системы исчисления (от 2 до 36)
* Возвращается строка
*----------------------------------------------------------------------------
lparameters iDec, iBase
local cHex, iRest, aHex
aHex = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
cHex = ""

do while iDec>0
iRest = iDec % iBase
iDec = (iDec - iRest) / iBase
cHex = substr(aHex, iRest+1, 1) + cHex
if between(iDec, 1, iBase-1)
cHex = substr(aHex, iDec+1, 1) + cHex
exit
endif
enddo

return cHex
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32546293
Forzy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё... вопрос снят....
Конкретно сёдня меня дубасит..........
...
Рейтинг: 0 / 0
Как из 10-ричной в 36-ричную систему счисления преобразовать?
    #32549711
Lee Rogers
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Из десятичной в "свою собственную" Например, 234 в систему с основой "ПюDd0376>.Жц" Основа не важна. Хоть до предела длины строковой переменной.

FUNCTION d2basex
PARAMETERS n_dec, s_basex
n_base = LEN(s_basex)
s_ret = ''
DO WHILE n_dec>0
s_ret=SUBSTR(s_basex,(n_dec%n_base)+1,1)+s_ret
n_dec=INT(n_dec/n_base)
ENDDO
RETURN s_ret

Обратная ей процедура

FUNCTION BASEX2D
PARAMETERS s_bx_num, s_basex
n_base = LEN(s_basex)
n_ret = 0
n_power = 0
n_posit = 1
DO WHILE n_posit <= LEN( s_bx_num )
s_digi = SUBSTR( RIGHT( s_bx_num, n_posit ), 1, 1 )
n_ret = (AT(s_digi, s_basex )-1) * (n_base^n_power) + n_ret
n_posit = n_posit + 1
n_power = n_power + 1
ENDDO
RETURN n_ret
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как из 10-ричной в 36-ричную систему счисления преобразовать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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