sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助!!相关的知识,希望对你有一定的参考价值。
创建函数
create FUNCTION [dbo].[Dec2Bin](@Dec INT, @StrLen INT)RETURNS VARCHAR(31) -- INT型,4字节,正数转为二进制字符串最多31位
AS
BEGIN
DECLARE @BinStr AS VARCHAR(31) -- 二进制表示的字符串
DECLARE @Div2 AS INT -- 商
DECLARE @Mod2 AS INT -- 模/余数
IF @Dec < 0
RETURN \'NULL\' -- 不支持负数的转换
SET @Div2 = @Dec / 2
SET @Mod2 = @Dec % 2
SET @BinStr = \'\'
WHILE @Div2 <> 0
BEGIN
SET @BinStr = CAST(@Mod2 AS CHAR(1)) + @BinStr
SET @Dec = @Dec / 2
SET @Div2 = @Dec / 2
SET @Mod2 = @Dec % 2
END;
SET @BinStr = CAST(@Mod2 AS CHAR(1)) + @BinStr -- 至此,已完成十进制到二进制的转换
IF @StrLen > LEN(@BinStr) -- 如果用户指定的长度大于实际长度,则需要左边补0
BEGIN
IF @StrLen > 31 -- 返回的长度,最长为32
SET @StrLen = 31
DECLARE @ZeroStr VARCHAR(31) -- 需要补充的"0000..."
DECLARE @OffsetLen TINYINT -- 需要补充几个"0"
SET @ZeroStr = \'\'
SET @OffsetLen = @StrLen - LEN(@BinStr)
WHILE @OffsetLen > 0
BEGIN
SET @ZeroStr = @ZeroStr + \'0\'
SET @OffsetLen = @OffsetLen - 1
END
SET @BinStr = @ZeroStr + @BinStr
END
RETURN @BinStr
END
调用函数
select [dbo].[Dec2Bin](3,8)其中3是要转换的数字,8是最后二进制的长度,不足位的前补0
追问谢谢你,大神,成功了,弱弱问一句,有没有比较简单点的语句呢?
追答估计简化不了吧,要不你就把后半段补0那些去掉
追问那这样我把1000转换成二进制还会是1111101000吗?
参考技术A convte.tostring(int 2) 家里没有数据库 前面那关键字可能写错了。你试试。建议你在数据库上安装一个插件 这样方便多了。 参考技术B 这个要看错误日志的
sql服务启动不了有好几个常见的问题,类似于破解版失效,ip配置错误啊,
看看日志文件c:\program
files\microsoft
sql
server\mssql类似目录下找到日志文件
不一定是这个地址,可以试试
用c语言编写函数,将输入的十进制数转换成十六进制数并输出
//#include "stdafx.h"//If the vc++6.0, with this line.#include "stdio.h"
int main(void)
unsigned n,i,k;
printf("Please enter a positive integer...\\nn=");
scanf("%d",&n);
printf("%d(10) = 0x",n);
if(n)
for(i=0;(n&0xf0000000)==0;n<<=4,i++);
for(;i<8;i++)
k=n&0xf0000000;
(k>>=28)&=0x0f;
printf("%c",k<10 ? k+'0' : k+0x37);
n<<=4;
else printf("0");
printf("\\n");
return 0;
参考技术A 简单作法:用printf()函数格式输出完成
#include <stdio.h>
void main()
int n;
scanf("%d", &n ); //输入10进制数
printf("%x", n ); //输出16进制格式
超出整数范围的,需要用字符串实现,代码较为复杂,有兴趣可搜一下大数运算的C程序代码
以上是关于sql Server如何编写函数实现把十进制数转换为二进制数?求大神相助!!的主要内容,如果未能解决你的问题,请参考以下文章