Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как перевести десятичное число в двоичное? / 12 сообщений из 12, страница 1 из 1
23.01.2018, 11:13
    #39588932
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
Добрый день.


Подскажите как это сделать?

Вроде cast так не может...
...
Рейтинг: 0 / 0
23.01.2018, 11:13
    #39588934
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
Например, число 5 перевести в 101
...
Рейтинг: 0 / 0
23.01.2018, 11:20
    #39588948
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
дампер,

вам на экран что-ли показывать? так то не надо никому
...
Рейтинг: 0 / 0
23.01.2018, 11:22
    #39588954
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
TaPaKдампер,

вам на экран что-ли показывать? так то не надо никому

Строку чтоб вывел.
...
Рейтинг: 0 / 0
23.01.2018, 11:28
    #39588964
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
дампер,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @I int = 5

;with A as
(
select 
 SUM(case when @i&8<>0 then 1 else 0 end) Bit3
,SUM(case when @i&4<>0 then 1 else 0 end) Bit2
,SUM(case when @i&2<>0 then 1 else 0 end) Bit1
,SUM(case when @i&1<>0 then 1 else 0 end) Bit0
)
select 
CAST(Bit3 as varchar(1)) +  CAST(Bit2 as varchar(1)) + CAST(Bit1 as varchar(1)) + CAST(Bit0 as varchar(1))
from A
...
Рейтинг: 0 / 0
23.01.2018, 11:36
    #39588977
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
Alexander Usдампер,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
declare @I int = 5

;with A as
(
select 
 SUM(case when @i&8<>0 then 1 else 0 end) Bit3
,SUM(case when @i&4<>0 then 1 else 0 end) Bit2
,SUM(case when @i&2<>0 then 1 else 0 end) Bit1
,SUM(case when @i&1<>0 then 1 else 0 end) Bit0
)
select 
CAST(Bit3 as varchar(1)) +  CAST(Bit2 as varchar(1)) + CAST(Bit1 as varchar(1)) + CAST(Bit0 as varchar(1))
from A




Спасибо, то что надо!
...
Рейтинг: 0 / 0
23.01.2018, 11:43
    #39588982
putdoij
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
http://www.sqlservercentral.com/scripts/Miscellaneous/30722/

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
use tempdb
go
if exists (select 1 from sys.objects where object_id = OBJECT_ID('dbo.fn_GetBitString'))
	DROP FUNCTION dbo.fn_GetBitString
go
CREATE FUNCTION dbo.fn_GetBitString
(
	  @IntValue Int
	, @BitSize tinyInt --1 to 32
)
RETURNS varchar(32)
AS
BEGIN
	DECLARE @BitNum tinyint, @BitString varchar(32)

	IF @BitSize>32 SET @BitSize=32

	SELECT @BitNum=1, @BitString=''
	
	WHILE @BitNum<=@BitSize
	Begin
		SELECT @BitString=
			Cast( (convert(bigint,(@IntValue/power(cast(2 as bigint),@BitNum-1))) % 2)  as char(1))
			-- Cast( dbo.fn_GetBit(@IntValue ,@BitNum)  as char(1))
			+@BitString
		SELECT @BitNum=@BitNum+1
	End 

	RETURN @BitString

END
GO

select dbo.fn_GetBitString(5,4) ,dbo.fn_GetBitString(5,8) ,dbo.fn_GetBitString(5,16)
...
Рейтинг: 0 / 0
23.01.2018, 11:44
    #39588985
Minamoto
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
дамперСпасибо, то что надо!
facepalm.jpg
Проще всего сделать рекурсивную функцию и пользоваться ей:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create function dbo.IntToBin (@n int) returns varchar(max) as 
begin 
    declare @res varchar(max);
    if @n < 2 
        set @res = cast(@n as varchar(max)); 
    else 
        set @res = dbo.IntToBin(@n/2) + cast(@n % 2 as varchar(max)); 
    return @res;
end;
go

select dbo.IntToBin(9999);
...
Рейтинг: 0 / 0
23.01.2018, 11:53
    #39588998
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
MinamotoдамперСпасибо, то что надо!
facepalm.jpg
Проще всего сделать рекурсивную функцию и пользоваться ей:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
create function dbo.IntToBin (@n int) returns varchar(max) as 
begin 
    declare @res varchar(max);
    if @n < 2 
        set @res = cast(@n as varchar(max)); 
    else 
        set @res = dbo.IntToBin(@n/2) + cast(@n % 2 as varchar(max)); 
    return @res;
end;
go

select dbo.IntToBin(9999);




Более универсальная штука, спасибо.
...
Рейтинг: 0 / 0
23.01.2018, 11:53
    #39589002
дампер
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
putdoij http://www.sqlservercentral.com/scripts/Miscellaneous/30722/

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
use tempdb
go
if exists (select 1 from sys.objects where object_id = OBJECT_ID('dbo.fn_GetBitString'))
	DROP FUNCTION dbo.fn_GetBitString
go
CREATE FUNCTION dbo.fn_GetBitString
(
	  @IntValue Int
	, @BitSize tinyInt --1 to 32
)
RETURNS varchar(32)
AS
BEGIN
	DECLARE @BitNum tinyint, @BitString varchar(32)

	IF @BitSize>32 SET @BitSize=32

	SELECT @BitNum=1, @BitString=''
	
	WHILE @BitNum<=@BitSize
	Begin
		SELECT @BitString=
			Cast( (convert(bigint,(@IntValue/power(cast(2 as bigint),@BitNum-1))) % 2)  as char(1))
			-- Cast( dbo.fn_GetBit(@IntValue ,@BitNum)  as char(1))
			+@BitString
		SELECT @BitNum=@BitNum+1
	End 

	RETURN @BitString

END
GO

select dbo.fn_GetBitString(5,4) ,dbo.fn_GetBitString(5,8) ,dbo.fn_GetBitString(5,16)




Через функцию круто ;)
...
Рейтинг: 0 / 0
23.01.2018, 12:38
    #39589031
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
SELECT
 REPLACE(LTRIM(REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
 REPLACE(
          CONVERT(VARCHAR(MAX),CAST(5 AS VARBINARY(MAX)),2)
 ,'0','0000')
 ,'1','0001')
 ,'2','0010')
 ,'3','0011')
 ,'4','0100')
 ,'5','0101')
 ,'6','0110')
 ,'7','0111')
 ,'8','1000')
 ,'9','1001')
 ,'A','1010')
 ,'B','1011')
 ,'C','1100')
 ,'D','1101')
 ,'E','1110')
 ,'F','1111')
 ,'0',' ')),' ','0');
...
Рейтинг: 0 / 0
23.01.2018, 13:47
    #39589094
Alexander Us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как перевести десятичное число в двоичное?
для (совсем) извращенцев:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
declare @val as int = 14-- ;2147483647--;-2147483648
declare @tmp bigint = cast(cast(@val as varbinary(4)) as bigint)

select format
(
 (@tmp/1)%2*1
+(@tmp/2)%2*10
+(@tmp/4)%2*100
+(@tmp/8)%2*1000
+(@tmp/16)%2*10000
+(@tmp/32)%2*100000
+(@tmp/64)%2*1000000
+(@tmp/128)%2*10000000
+(@tmp/256)%2*100000000
+(@tmp/512)%2*1000000000
+(@tmp/1024)%2*10000000000
+(@tmp/2048)%2*100000000000
+(@tmp/4096)%2*1000000000000
+(@tmp/8192)%2*10000000000000
+(@tmp/16384)%2*100000000000000
+(@tmp/32768)%2*1000000000000000
+(@tmp/65536)%2*10000000000000000
+(@tmp/131072)%2*100000000000000000
+(@tmp/262144)%2*1000000000000000000
+(@tmp/524288)%2*10000000000000000000
+(@tmp/1048576)%2*100000000000000000000
+(@tmp/2097152)%2*1000000000000000000000
+(@tmp/4194304)%2*10000000000000000000000
+(@tmp/8388608)%2*100000000000000000000000
+(@tmp/16777216)%2*1000000000000000000000000
+(@tmp/33554432)%2*10000000000000000000000000
+(@tmp/67108864)%2*100000000000000000000000000
+(@tmp/134217728)%2*1000000000000000000000000000
+(@tmp/268435456)%2*10000000000000000000000000000
+(@tmp/536870912)%2*100000000000000000000000000000
+(@tmp/1073741824)%2*1000000000000000000000000000000
+(floor(@tmp/2147483648))%2*10000000000000000000000000000000
,'00000000000000000000000000000000')
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как перевести десятичное число в двоичное? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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