Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒SQL\T-SQL⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐WEB Разработка
⇐ORACLE SQL \ JAVA
⇐Мото

T-SQL: Преобразование двоичного числа в целое


Сегодня разберем пример преобразования двоичного числа в целое.

Например у нас есть число "1001110 " в двоичном представлении, логика перевода такова:

-- 1001110 =                      Само число
-- 2 в шестой * 1 +            Если 1, умножаем 2 в степени(длина числа(в нашем примере это 7) минус позиция числа( тут - 1))
-- 2 в пятой * 0 +               Если 0, умножаем 2 в степени(длина числа(в нашем примере это 7) минус позиция числа( тут - 2))
-- 2 в четвертой * 0 +       Далее по аналогии...
-- 2 в третьей * 1 +
-- 2 во второй * 1 + 
-- 2 впервой * 1 +
-- 2 в нулевой * 0 
-- = 64 + 8 + 4 + 2             Складываем получившиеся результаты
-- = 78                                 Искомое число

Сама функция:

USE [Sbase]
GO

CREATE FUNCTION [dbo].[ToInt]  
(  
    @num AS VARCHAR(MAX)  
) RETURNS INT AS BEGIN

    DECLARE @pos INT = LEN(@num)
    DECLARE @i INT = 1
    DECLARE @res INT = 0
    
    WHILE @i != @pos + 1
    BEGIN
        DECLARE @char char(1) = SUBSTRING(@num, @i, 1)
        
        IF @char = '1'
        BEGIN
            SET @res = @res + POWER(2, @pos-@i) * 1
        END
        ELSE
            SET @res = @res + POWER(2, @pos-@i) * 0
        
        SET @i = @i + 1        
    END

RETURN @res;
END;

 

И вызовем функцию: SELECT Sbase.dbo.ToInt(1001110)

Видеоролик на YouTubehttps://www.youtube.com/watch?v=kTg36chVYh4


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

© Snakeproject.ru создан в 2013 году. При копировании материала с сайта - оставьте ссылку.


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru