0

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

所以我的代码如下:

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

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

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

4

2 回答 2

0

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

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

于 2017-03-13T12:24:11.893 回答
0

在 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

于 2017-03-13T13:18:00.810 回答