如何将应答中的10个字节的BCD码解析出来(15分)

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

seeok

Unregistered / Unconfirmed
GUEST, unregistred user!
假设有个应答S,其中前10个字节是bcd码的,如何将这10个字节解码出来呢?谢谢
 
怎么没有人回答啊 :(
 
很简单,将它转成16进制的字串就行了
function GetBCDString(const Buffer
Size: Integer): string;
var
P: PByte;
begin
Result := '';
P := @Buffer;
while Size > 0 do
begin
Result := Result + Format('%.2x', [P^]);
Inc(P);
Dec(Size);
end
end;
转完你看看字串内容,基本就能看出意思来
---------
忘了Dec(Size)了
 
输入BCD看帮助啊!DELPHI有例子
 
BCD码不就是8421吗?转换很简单的,楼主只要把它的换算方法理解清楚就可以了.
 
兄弟,作短信的吧?
delphi里用现成的冬冬,想研究看看源码。
function GW_GetMessageID(date: pchar
datelen: integer): string;
var
bcd:TBcd;
function fillZero(text: string
len: integer): string;
var i:integer;
begin
try
result:=text;
for i:=1 to len-length(text) do
result:='0'+result;
except
result:=text;
end;
end;
begin
BCD.Precision:=6;
BCD.SignSpecialPlaces:=0;
copymemory(@BCD.Fraction[0],@date[0],3);
result:=fillZero(BcdTostr(BCD),6);
BCD.Precision:=6;
BCD.SignSpecialPlaces:=0;
copymemory(@BCD.Fraction[0],@date[3],4);
result:=result+fillZero(BcdTostr(BCD),6);

BCD.Precision:=8;
BCD.SignSpecialPlaces:=0;
copymemory(@BCD.Fraction[0],@date[7],3);
result:=result+fillzero(BcdTostr(BCD),8);
end;
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
后退
顶部