关于bcd码转换为ascii码(100分)

  • 主题发起人 主题发起人 12345
  • 开始时间 开始时间
1

12345

Unregistered / Unconfirmed
GUEST, unregistred user!
今天我在帮助一同事做一程序时
在com上发送bcd信息程序无法正确显示
请大虾们帮忙!
谢谢!
 
一个偷懒的办法
aBCDValue := StrToInt('$' + IntToStr(aValue));
aValue := StrToInt(IntToHex(aBCDValue, 2))
 
function BCD(Hex:longint):longint;
var b0,b1,b2,b3,b4,b5,b6,b7 : longint;
begin
b7:=(Hex div 10000000);
b6:=(Hex mod 10000000) div 1000000;
b5:=(Hex mod 1000000 ) div 100000;
b4:=(Hex mod 100000 ) div 10000;
b3:=(Hex mod 10000 ) div 1000 ;
b2:=(Hex mod 1000 ) div 100 ;
b1:=(Hex mod 100 ) div 10 ;
b0:=(Hex mod 10 );
BCD:=b0+(b1 shl 4)+(b2 shl 8)+(b3 shl 12)
+(b4 shl 16)+(b5 shl 20)+(b6 shl 24)+(b7 shl 28);
end;

procedure Str_Hex(dstr:string;
var BCD2);
var d : array[1..4] of byte;
i : Byte;
bb: array[0..1] of byte;
begin
for i:=1 to 4 do
begin
if dstr in ['0'..'9'] then
d:=Ord(dstr)-$30 else
end;
bb[1]:=d[1]*16+d[2];
bb[0]:=d[3]*16+d[4];
move(bb,BCD2,2)
end;
 
接受答案了.
 
后退
顶部