我正在尝试将 sql 中的 10 进制数转换为 2 进制数/二进制数,但返回的不是个数和零数

I'm trying to convert a base 10 number in sql to base 2 / binary but what's being returned ins't ones and zero's

我只是使用一些简单的 sql 来尝试让它工作,然后我将把它实现到我的程序中。

所以我的代码如下:

select convert(varbinary(16), cast('63' as int)))

我从这个查询得到的结果是 0x000003F,这不是我想要的,我期待 000111111。

有谁知道它为什么这样做以及如何让它将数字显示为 1 和 0,将不胜感激,谢谢。这是使用 MSSql。

正如 MySQL 中的 collapsar 注释,您需要指定基数 2,这正是您在这里所缺少的。如果没有它,MySQL 这里默认为十六进制编码,但您需要提供一个数字 (63)、一个起始基数 (10) 和一个最终基数 (2)。

把这些放在一起你得到 select conv(63, 10, 2) sqlfiddle

在 MSSQL 中,我想你可以试试这个:

DECLARE @var1 AS int;
SET @var1=12;
WITH A AS (
    SELECT 0 AS ORD, @var1 AS NUMBER, CAST('' AS VARCHAR(20)) AS BITS
    UNION ALL 
    SELECT ORD+1, NUMBER/2,  CAST(BITS+CAST(NUMBER%2 AS VARCHAR(20)) AS VARCHAR(20))
          FROM A 
          WHERE  NUMBER>0)
SELECT RIGHT('000000000000000'+ CASE WHEN BITS='' THEN '0' ELSE REVERSE(BITS) END,16) AS BIN_VALUE
FROM A
WHERE NUMBER=0;

输出:

BIN_VALUE

0000000000001100