当前位置:主页>仓库管理软件> 列表

急,请问在delphi中如何用一个函数把BCD码转化成AS 找电子行业进销存

库存管理软件版1楼: 急,请问在delphi中如何用一个函数把BCD码转化成ASCII码???

2楼: function TranBCDToASC(abcd:Byte):Byte;
begin
result:=(abcd AND $F0) div 16 * 10 + (abcd AND $0F)
end; 如电子行业进销存

3楼: 你好,我验证了,好像不对阿,应该加个30H阿。能解释一下你的东东吗?

具体算法是:
转换步骤:
将十进制数的BCD码转换为ASCII 码,分为两种情况:
1.对于未组合的BCD码,只要加上 30H即可。可用如下指令(设BCD码放在AL中): ADD AL,30H 或 OR AL,30H
2.对于组合的BCD码,取其低四位 加上30H,存放在低字节,将原数右移 四位,加上30H存放在高字节。  
例如:将以BCD码表示的十制数56(0101 0110)转换成ASCII码,过程如下:
先取其低四位 0000 0110,加上30H,存入低字节,再将 0101 0110右移四位得0000 0101 ,加上30H,存入高字节。

用DELPHI怎么表达,也就是怎么实现这个算法。

4楼: 请问:用DELPHI怎么 写这个算法。 转换步骤:
将十进制数的BCD码转换为ASCII 码,分为两种情况:
1.对于未组合的BCD码,只要加上 30H即可。可用如下指令(设BCD码放在AL中): ADD AL,30H 或 OR AL,30H
2.对于组合的BCD码,取其低四位 加上30H,存放在低字节,将原数右移 四位,加上30H存放在高字节。  
例如:将以BCD码表示的十制数56(0101 0110)转换成ASCII码,过程如下:
先取其低四位 0000 0110,加上30H,存入低字节,再将 0101 0110右移四位得0000 0101 ,加上30H,存入高字节。

5楼: 我不知道你的算法哪里来的,我没听说过,不过我的应该是正确的。
另外什么叫组合的 BCD 码 和 未组合的 BCD 码?

6楼: 你上网上查查看,我的哪个算法对不对。 老兄长点见识啊。

库存管理软件版7楼: BCD码直接就是ASC码,应该不用转换的,你有数据例子
最好发上来说明一下,看看!

8楼: 老兄们:
BCD码是指:BCD码(二--十进制编码),所谓二--十进制编码(BCD码)就是指将十进制的每一位用4位二进制来表示,其最常用是8421 BCD码。
ASCII码,主要对数字、字母、通用符号、控制符号等字符的编码。ASCII码是用七位表示一个字符,可以表示128种不同的字符,共有三类:(1)数字0~9;(2)26个大写英文字母和26个小写英文字母;(3)各种运算符号、标点符号和控制符号等。

写出十进数563.97D对应的8421BCD码。
    563.97D=0101 0110 0011 . 1001 01118421BCD
  例 写出8421BCD码1101001.010118421BCD对应的十进制数。
    1101001.010118421BCD=0110 1001 . 0101 10008421BCD=69.58D

9楼: //仅对整数,供参考
function BCDtoInt(aBCD: string): integer;
var
i,j,k,p,len: integer;
begin
len:=length(aBCD);
k:=0;
for i := len downto 1 do begin
p:=1;
for j := 1 to (len - i) do p := p * 16;
k:=k + (ord(aBCD[i])-ord(''0'')) * p;
end;
result:=k;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
strBCD:string;
k: integer;
begin
strBCD:=''19'';
k:=BCDtoInt(strBCD); //25
Label1.caption:=inttostr(k);
end;

10楼: 路过看下~