sql 读出来的16进制怎么转10进制
0x64727A687A64715F3100000000000000000000007600006500CED2BECDCDE6D2BBBBE10000000000000...
0x64727A687A64715F3100000000000000000000007600006500CED2BECDCDE6D2BBBBE100000000000000000000000000000000000000000000000008000C0009000E004E002C002A0082000000EF0C0000141600000000000000000000000000000000000000000000000000000000000000000000000000000000961E000082
比如以上代码。回答的好追加50分
绝对是X。是从SQL SERVER 2000数据库中查出来的 varbinary 类型数据 展开
比如以上代码。回答的好追加50分
绝对是X。是从SQL SERVER 2000数据库中查出来的 varbinary 类型数据 展开
10个回答
展开全部
同意gwes的说法。
而且不仅如此,首先请确定你真正需要存的是什么东西,varbinary应该是存一些较小的二进制文件用的,所以我认为有较大的可能是你数据库设计的时候用错了类型。
如果你确认不是数据库设计出错或者你无法更改这个数据库的话
那么搞清楚这个字段是用来存什么的,文件?图片?objec(序列化后)?对于每种方法都有不同的处理方法,而且也和你所用的编译语言有关。java?c#?c++?
话说c++处理这种东西会非常麻烦,java和c#你应该能找到正确的函数的。不过首先是确定这个字段存的是什么东西!
顺便bs下前面说16进制不能有x的,我真不知道说什么好,0x的意思是:在此之后的字符串是16进制表示的。
比如0x1e就是十进制的30。
而且不仅如此,首先请确定你真正需要存的是什么东西,varbinary应该是存一些较小的二进制文件用的,所以我认为有较大的可能是你数据库设计的时候用错了类型。
如果你确认不是数据库设计出错或者你无法更改这个数据库的话
那么搞清楚这个字段是用来存什么的,文件?图片?objec(序列化后)?对于每种方法都有不同的处理方法,而且也和你所用的编译语言有关。java?c#?c++?
话说c++处理这种东西会非常麻烦,java和c#你应该能找到正确的函数的。不过首先是确定这个字段存的是什么东西!
顺便bs下前面说16进制不能有x的,我真不知道说什么好,0x的意思是:在此之后的字符串是16进制表示的。
比如0x1e就是十进制的30。
2009-02-03
展开全部
自己写函数?参照
create function hextoint(@h varchar(8))
returns bigint
begin
declare @r bigint
set @r=0
declare @i bigint
set @i=1
while @i<=len(@h)
begin
set @r=@r+
convert(int,
(
case
when substring(@h,@i,1)<='9' then substring(@h,@i,1)
when substring(@h,@i,1)<='A' then '10'
when substring(@h,@i,1)<='B' then '11'
when substring(@h,@i,1)<='C' then '12'
when substring(@h,@i,1)<='D' then '13'
when substring(@h,@i,1)<='E' then '14'
when substring(@h,@i,1)<='F' then '15'
end
))
*power(16,len(@h)-@i)
set @i=@i+1
end
return @r
end
go
create function inttohex(@i int)
returns varchar(15)
begin
--declare @i int
--set @i=11259375
declare @r varchar(10)
set @r=''
while @i/16>0
begin
set @r=
(case
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)
+@r
--select @r,@i
set @i=@i/16
end
--select @r,@i
if @i>0
set @r=(case
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)+@r
-- select @r
return @r
end
go
create function hextoint(@h varchar(8))
returns bigint
begin
declare @r bigint
set @r=0
declare @i bigint
set @i=1
while @i<=len(@h)
begin
set @r=@r+
convert(int,
(
case
when substring(@h,@i,1)<='9' then substring(@h,@i,1)
when substring(@h,@i,1)<='A' then '10'
when substring(@h,@i,1)<='B' then '11'
when substring(@h,@i,1)<='C' then '12'
when substring(@h,@i,1)<='D' then '13'
when substring(@h,@i,1)<='E' then '14'
when substring(@h,@i,1)<='F' then '15'
end
))
*power(16,len(@h)-@i)
set @i=@i+1
end
return @r
end
go
create function inttohex(@i int)
returns varchar(15)
begin
--declare @i int
--set @i=11259375
declare @r varchar(10)
set @r=''
while @i/16>0
begin
set @r=
(case
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)
+@r
--select @r,@i
set @i=@i/16
end
--select @r,@i
if @i>0
set @r=(case
when (@i % 16)<=9 then convert(varchar(1),@i % 16)
when (@i % 16)=10 then 'A'
when (@i % 16)=11 then 'B'
when (@i % 16)=12 then 'C'
when (@i % 16)=13 then 'D'
when (@i % 16)=14 then 'E'
when (@i % 16)=15 then 'F'
end)+@r
-- select @r
return @r
end
go
参考资料: http://www.cnblogs.com/jfei1982/articles/977048.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
等于 drzhzdq_1
给个Delphi 的转化例子:
procedure TForm1.Button1Click(Sender: TObject);
function DeleteSpace(ss: String): String;
var //删除字符串中所有的空格
i: Integer;
begin
Result := ss;
i := 1;
while i <= Length(Result) do begin
if Result[i] = ' ' then Delete(Result, i, 1)
else Inc(i);
end;
end;
procedure GetData(const ss: String; var dt: Array of Integer);
var
i,j: Integer;
sb: String;
begin
for i := Low(dt) to High(dt) do begin
j := 2 * i + 1;
sb := ss[j] + ss[j + 1];
dt[i] := StrToInt('$' + sb);
end;
end;
var
ss,sb,rt: String;
ac: Byte;
id,ct: Integer;
dt: Array of Integer;
begin
Edit2.Text := '';
ss := DeleteSpace(Edit1.Text); //去掉所有空格
ct := Length(ss);
if (ct mod 2) <> 0 then begin //首位<10
ss := '0' + ss;
Inc(ct);
end;
if ss[2] = 'x' then begin //考虑 0x878ABD7DB7CF 格式
Delete(ss, 1, 2);
Dec(ct, 2);
end;
SetLength(dt, ct div 2);
GetData(ss, dt);
rt := '';
if ct > 0 then begin
id := Low(dt);
while id <= High(dt) do begin
ac := dt[id];
if ac < 128 then begin // 单字节字符
sb := Chr(ac);
Inc(id);
end else begin // 双字节字符
sb := Chr(ac) + Chr(dt[id + 1]);
Inc(id, 2);
end;
rt := rt + sb;
end;
end;
Edit2.Text := rt;
end;
给个Delphi 的转化例子:
procedure TForm1.Button1Click(Sender: TObject);
function DeleteSpace(ss: String): String;
var //删除字符串中所有的空格
i: Integer;
begin
Result := ss;
i := 1;
while i <= Length(Result) do begin
if Result[i] = ' ' then Delete(Result, i, 1)
else Inc(i);
end;
end;
procedure GetData(const ss: String; var dt: Array of Integer);
var
i,j: Integer;
sb: String;
begin
for i := Low(dt) to High(dt) do begin
j := 2 * i + 1;
sb := ss[j] + ss[j + 1];
dt[i] := StrToInt('$' + sb);
end;
end;
var
ss,sb,rt: String;
ac: Byte;
id,ct: Integer;
dt: Array of Integer;
begin
Edit2.Text := '';
ss := DeleteSpace(Edit1.Text); //去掉所有空格
ct := Length(ss);
if (ct mod 2) <> 0 then begin //首位<10
ss := '0' + ss;
Inc(ct);
end;
if ss[2] = 'x' then begin //考虑 0x878ABD7DB7CF 格式
Delete(ss, 1, 2);
Dec(ct, 2);
end;
SetLength(dt, ct div 2);
GetData(ss, dt);
rt := '';
if ct > 0 then begin
id := Low(dt);
while id <= High(dt) do begin
ac := dt[id];
if ac < 128 then begin // 单字节字符
sb := Chr(ac);
Inc(id);
end else begin // 双字节字符
sb := Chr(ac) + Chr(dt[id + 1]);
Inc(id, 2);
end;
rt := rt + sb;
end;
end;
Edit2.Text := rt;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果这个字段是data字段,这个表是t_tbl
那么:
SELECT CAST(data AS VARCHAR(MAX)) FROM tbl
能得到你想看到的字符串。
结果是drzhzdq_1
那么:
SELECT CAST(data AS VARCHAR(MAX)) FROM tbl
能得到你想看到的字符串。
结果是drzhzdq_1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你知道你在读取的是什么么???
还有是32位还是64位机器?
我想你没有清楚自己要做什么。你知道你为什么要把他转成十进制吗??
给你举个例子,假设数据库里有“你好”这两个字,按照你的方法“查”出来对应的大概会类似于:
0x5684586f18645c8984ba15000000bc5648...
然后你还要把他转成十进制么?
你得到的是一个数据流,我想你要做的也许是使用类似BinaryReader的东西将你读到的这个数据流“翻译”回去。。
还有是32位还是64位机器?
我想你没有清楚自己要做什么。你知道你为什么要把他转成十进制吗??
给你举个例子,假设数据库里有“你好”这两个字,按照你的方法“查”出来对应的大概会类似于:
0x5684586f18645c8984ba15000000bc5648...
然后你还要把他转成十进制么?
你得到的是一个数据流,我想你要做的也许是使用类似BinaryReader的东西将你读到的这个数据流“翻译”回去。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询