rt

解决方案 »

  1.   

    变量太大了  程序到那就down了
      

  2.   

    DELPHI的INT变量范围是多少?
    SQL的是这个:
    bigint从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字)。存储大小为 8 个字节。int从 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型数据(所有数字)。存储大小为 4 个字节。int 的 SQL-92 同义字为 integer。
      

  3.   

    你直接传一个int出来,是没问题的吧?
      

  4.   

    有没有int64tohex() ?  inttohex 确实搞不定啊
      

  5.   

    我觉得不是SQL的问题,建议到delphi版问问。
      

  6.   

    直接在SQL里面转好再传出去。CREATE FUNCTION dbo.f_dec_hex(@num bigint,@length int)
    RETURNS varchar(16)
    AS
    BEGIN
    --@num为要转换为十六进制进制字符串的正整数,若为负数则返回'0'
    --@length为要返回的十六进制字符串的长度
    --若@length为负数则返回'0',若为0则返回实际长度的十六进制字符串
    --若@length大于0则返回长度为@length的十六进制字符串(从低位起,位数不够高位补'0',超过位数则高位被截断)
      DECLARE @result varchar(16)
      SET @result=''
      IF @num<=0 or @length<0
        SET @result='0'
      ELSE
      BEGIN
        WHILE @num<>0
          SELECT @result=SUBSTRING('0123456789ABCDEF',@num%16+1,1)+@result,@num=@num/16
        IF @length>0
          SET @result=RIGHT(REPLICATE('0',@length)+@result,@length)
      END
      RETURN @result
    END
    GO
      

  7.   

    http://www.programfan.com/club/showpost.asp?id=6352去看看
      

  8.   

    delphi的inttohex函数支持int64位的16进制转换。 
    所以,INTTOHEX和BIGINT都没问题。 
    所以楼主要先看下报错信息,可能是别的地方的问题。
      

  9.   

    IntToHex函数有两个参数,
    第一个是要转换的十进制数,第二个是返回十六进制数的最小长度。
      

  10.   

    1.HexToBin() 十六进制转换二进制
    所在单元:Classes
    Delphi语法:function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer
    描述:
    调用HexToBin函数转换十六进制字符串到相应的二进制值。
    Text是一个表示十六进制值的字符串。
    Buffer返回转换后的二进制结果值。
    BufferSize表示Buffer的大小。Text需要指向至少2*BufSize的十六进制字符,因为每两个十六进制字符表现为一个字节。
    HexToBin返回在Buffer中因为Text没有包含有效的十六进制字符('0'..'f')而还没有被用的字符数量.
    注意:十六进制数必须使用小写字符;HexToBind不能识别大写字符。2.BinToHex() 二进制转换十六进制 
    所在单元:Classes
    Delphi语法:procedure BinToHex(Buffer, Text: PChar; BufSize: Integer);
    描述:
    调用BinToHex转换buffer中的二进制值为它所表示的十六进制字符串
    Buffer是一个字节的缓冲区,其中包含二进制值
    Text返回一个以null为结束字符的字符串,表示Buffer作为十六进制数的值
    BufSize表示Buffer的大小。Text需要指向一系列字符,这些字符至少有2*BufSize大小字节。3.IntToHex()将整型数转换为十六进制数
    所在单元:SysUtils
    Delphi语法:
    function IntToHex(Value: Integer; Digits: Integer): string; overload;
    function IntToHex(Value: Int64; Digits: Integer): string; overload;
    描述:
    IntToHex转换一个数字为这个数字十六进制表示的字符串。Value是要转换的数字。参数Digits指定字符最小宽度,最小宽度不足时将用0填充。4.StrToInt()字符串转换成整型数
    所在单元:SysUtils
    Delphi语法:function StrToInt(const S: string): Integer;
    描述:
    返回字符串S转换成整数,字符串非整数表达时将引起异常,十六进制字符串转换为整型数要求在字符串前面添加$即可。