-2
私はMS SQL Server 2008を使用しています: '0x98120000'
を文字列'00011001010010000000000000000000'
に変換します。 逆の変換方法。文字列 '00011001010010000000000000000000'を '0x98120000'に変換する方法はありますか?
私を助けてください。ありがとう。
私はMS SQL Server 2008を使用しています: '0x98120000'
を文字列'00011001010010000000000000000000'
に変換します。 逆の変換方法。文字列 '00011001010010000000000000000000'を '0x98120000'に変換する方法はありますか?
私を助けてください。ありがとう。
declare @t binary(4)
set @t = 0x98120000
-- Out string : '00011001010010000000000000000000'
Select REVERSE(REPLICATE('0',8-DATALENGTH(dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,1,1))))+dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,1,1)))+''+
REVERSE(REPLICATE('0',8-DATALENGTH(dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,2,1))))+dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,2,1)))+''+
REVERSE(REPLICATE('0',8-DATALENGTH(dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,3,1))))+dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,3,1)))+''+
REVERSE(REPLICATE('0',8-DATALENGTH(dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,4,1))))+dbo.DecimalToBinary(CONVERT(tinyint,0xFF) & SUBSTRING(@t,4,1))) As [String]
--Out String binary : 0x98120000
Declare @String varchar(200)
Set @String='00011001010010000000000000000000'
Select Cast([dbo].[BinaryToDecimal](REVERSE(SUBSTRING(@String,1,8))) as binary(1))+
Cast([dbo].[BinaryToDecimal](REVERSE(SUBSTRING(@String,9,8))) as binary(1))+
Cast([dbo].[BinaryToDecimal](REVERSE(SUBSTRING(@String,17,8))) as binary(1))+
Cast([dbo].[BinaryToDecimal](REVERSE(SUBSTRING(@String,25,8))) as binary(1)) as [ChangeBinary]
***関数[DBO]。[DecimalToBinary] ****
CREATE FUNCTION [dbo].[DecimalToBinary]
(
@Input bigint
)
RETURNS varchar(5000)
AS
BEGIN
DECLARE @Output varchar(5000) = ''
WHILE @Input > 0
BEGIN
SET @Output = @Output + CAST((@Input % 2) AS varchar)
SET @Input = @Input/2
END
RETURN REVERSE(@Output)
END
***** FUNCTION [DBO]。[BinaryToDecimal] *****
CREATE FUNCTION [dbo].[BinaryToDecimal]
(
@Input varchar(255)
)
RETURNS bigint
AS
BEGIN
DECLARE @Cnt tinyint = 1
DECLARE @Len tinyint = LEN(@Input)
DECLARE @Output bigint = CAST(SUBSTRING(@Input, @Len, 1) AS bigint)
WHILE(@Cnt < @Len)
BEGIN
SET @Output = @Output + POWER(CAST(SUBSTRING(@Input, @Len - @Cnt, 1) * 2 AS bigint), @Cnt)
SET @Cnt = @Cnt + 1
END
RETURN @Output
END
バイナリからストリングに変換する方法を教えてください。 – jarlh
あなたはこれを見るかもしれません:http://improve.dk/converting-between-base-2-10-and-16-in-t-sql/ – Shnugo