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


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

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

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

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

Строку чтоб вывел.
...
Рейтинг: 0 / 0
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #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
Как перевести десятичное число в двоичное?
    #39589031
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
Как перевести десятичное число в двоичное?
    #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
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как перевести десятичное число в двоичное?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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