将压缩BCD码转化成16进制(50分)

  • 主题发起人 主题发起人 suninrain
  • 开始时间 开始时间
S

suninrain

Unregistered / Unconfirmed
GUEST, unregistred user!
13 10 08 1B 01 00 00 00 00 00是一个压缩BCD码,里面包含了一个电话号码,请解出来,并给出原代码
 
Phone Call: 13100811101
 
BCD码怎么出现了B?
你问题也说得不清楚,结果到底要什么?
全文检索可以用了:
http://24.103.53.13/index.html
你自己去找BCD吧
 
13 10 08 1B 01 00 00 00 00 00
function bcdtohex(var buf:array of char):String;
const
hex:array[0..15]of char =('0',....'F')
var
c,m:byte;
i1:integer;
b,v: byte;
begin
result:=''
//初始化返回结果
for i1:=buf下边界 to buf上边界 do begin //数组函数忘记了。自己查
c:=ord(buf[i1]);
m:=c shr 4
//取bcd码高4位
b:=c and $0f
//取bcd码低4位
v:=m*10+b
//还原成ascall 码
m:= v shr 4
//取码高4位
result:=result+hex[m]
//显示为16进制数
m:=v and $0f
//取码低4位
result:=result+hex[m]
////显示为16进制数
///////此行用来给每个字节间加空格
result:=result+' ';
/////////////////////
end;
end;

返回的数据就是你要的16进制数
 
1b应该为18吧, 结果应该是:
0d 0a 08 12 01 00 00 00 00 00
 
多人接受答案了。
 
后退
顶部