mysql функция для конвертации в/из системы счисления,
- dir - направление (0 прямое, 1 обратное)
- offset - параметр сдвигающий алфавит системы счисления на offset символов, к примеру для 16 системы счисления 0123456789abcdef, offset = 5, получим алфавит 56789abcdef01234
может кому полезно будет.
- dir - направление (0 прямое, 1 обратное)
- offset - параметр сдвигающий алфавит системы счисления на offset символов, к примеру для 16 системы счисления 0123456789abcdef, offset = 5, получим алфавит 56789abcdef01234
PHP:
CREATE FUNCTION `BaseConvert`(num varchar(100),base INT,dir INT, offset INT) RETURNS varchar(100) CHARSET utf8
BEGIN
DECLARE AlphabetSymbols VARCHAR(64) DEFAULT "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
DECLARE AlphabetCurrent VARCHAR(64) DEFAULT "";
DECLARE AlphabetLength INT DEFAULT 62;
DECLARE AlphabetOffset INT DEFAULT 0;
DECLARE Result0 varchar(100) DEFAULT "";
DECLARE Result1 bigint DEFAULT 0;
DECLARE It1 INT DEFAULT 1;
SET AlphabetOffset = ((offset % AlphabetLength) % base);
SET AlphabetCurrent = CONCAT(MID(AlphabetSymbols,AlphabetOffset+1,base - AlphabetOffset),MID(AlphabetSymbols,1,AlphabetOffset));
IF dir = 0 THEN
WHILE num DO
SET Result0 = CONCAT(substr(AlphabetCurrent, (num % base)+1,1),Result0);
SET num = FLOOR((num/base));
END WHILE;
RETURN Result0;
ELSE
WHILE It1<=LENGTH(num) DO
SET Result1 = (Result1 * base) + (LOCATE(MID(num,It1,1),binary AlphabetCurrent) - 1);
SET It1 = It1 + 1;
END WHILE;
RETURN Result1;
END IF;
RETURN NULL;
END
Последнее редактирование: