我只是使用一些简单的sql来尝试让它工作,然后我会将它实现到我的程序中。
所以我的代码如下:
select convert(varbinary(16), cast('63' as int)))
我的查询结果是0x000003F,这不是我想要的,我期待着000111111。
有谁知道为什么会这样做以及如何让它将数字显示为1&0;和0' s,我们将不胜感激,谢谢。这是使用MSSql。
答案 0 :(得分:0)
作为MySQL中的collapsar笔记,你需要指定base 2,这是你在这里缺少的。没有它,MySQL默认为十六进制编码,但你需要提供一个数字(63),一个起始基数(10)和一个最终基数(2)。
将这些放在一起,即可获得select conv(63, 10, 2)
sqlfiddle
答案 1 :(得分: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;
输出继电器:
0000000000001100