将int型转为指定长度的二进制

转载 2007年09月13日 14:41:00

 

SET QUOTED_IDENTIFIER ON 
GO
SET ANSI_NULLS ON 
GO

CREATE FUNCTION Dec2Bin(@Dec INT@StrLen TINYINT)
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


GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

相关文章推荐

vc二进制字符串转为int

  • 2011年09月09日 14:15
  • 22KB
  • 下载

2015春季腾讯实习在线测试题之求int型字节长度,不准用sizeof

不使用sizeof,求某机器平台的int型整数位数(16,32,64) 思路,将整数变成字符串处理,并且在内存的末尾填零,即字符串结束符。 如 0x0012,0x00123456,0x001234...

计算int 型数值在内存中二进制1的个数

今天在华为OJ上遇到这么一个题目,很简单,但是却总是得不到最好的成绩记录。因此比较了自己的程序、思路与别人的异同,发现还是有很大区别的,遂记录如下。 题目—— 输入一个int型整数,求该整数的二进...

牛客网_华为机试_015_求int型正整数在内存中存储时1的个数 (十进制转二进制)

题目描述 输入一个int型的正整数,计算出该int型数据在内存中存储时1的个数。 输入描述:  输入一个整数(int类型) 输出描述:  这个数转换成2进制后,输出1的个数 示例1 输入...

int型转二进制,八进制,十六进制查表法

#include void toBinary(int num); void toOct(int num); void toHex(int num); void total(int num, int...
  • ll_xyls
  • ll_xyls
  • 2015年10月19日 19:31
  • 393

各种int,double,char等类型数据长度

#include #include #include using namespace std; int main() { cout

MySQL中int(11)最大长度是多少?

今天在添加数据的时候,发现当数据类型为 int(11) 时,我当时让用户添加数据时,最大输入的长度为11位,结果,添加数据添加不上,导致出现问题,我又改为最大长度为10位,结果验证9个1的时候是正常的...

详解mysql int类型的长度值

mysql在建表的时候int类型后的长度代表什么? 是该列允许存储值的最大宽度吗? 为什么我设置成int(1), 也一样能存10,100,1000呢.   当时我虽然知道int(1),这个长度1并...

生成最大值范围内无重复值的长度为最大值的随机序列List<int>

这种方法一般的用途就是将一批要显示的数据乱序随机显示,而我当初写这个方法也是抄袭的QQ密码提问的做法   原始的写法是这样的: public static List GetRandomList(thi...
  • starfd
  • starfd
  • 2011年11月22日 15:44
  • 1395

mysql——数据库设计中int与varchar中的长度含义

一、int中的长度 提问: MySQL的字段,unsigned int(3), 和unsinged int(6), 能存储的数值范围是否相同。如果不同,分别是多大? 回答...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:将int型转为指定长度的二进制
举报原因:
原因补充:

(最多只允许输入30个字)