问题一、如何将一个integer数值(取值范围1-99999999)转BCD(8421码)后依次存储到4个char数组中比如:   a,b:integer;
   c,d: array[1..4] of char;
   a:=23;
   b:=90000023;  要求 :a,b分别放置到数组c 、d中,处理完后,
    
     c[1]=35(高4位为2,低4位为3),c[2]=0,c[3]=0,c[4]=0     d[1]=35(高4位为2,低4位为3),d[2]=0,d[3]=0,d[4]=144(高4位为9,低4位为0)问题二:    如何将bcd码的数组再转成数值   比如将存放在d[1]d[1]d[1]d[1]中的数值提取出来,还是90000023,再存放到变量b中。

解决方案 »

  1.   

    利用下面两个函数进行操作
    function dec2bcd(dec: Integer):Integer;
    begin
      result:= ((dec div 10) shl 4)+(dec mod 10);
    end;function bcd2dec(bcd: Integer):Integer;
    begin
      result:= ((bcd shr 4)*10)+(bcd mod 16);
    end;
      

  2.   

    第一个问题:
    整数当做16进制字符串放到char数组中吧?
    pa : integer;
    for i=1 to 4 do
    begin
      pa := a div ((i-1)*pow(10,2));
      c[i] := (pa mod 10)+ ((pa mod 100) div 10)*16;
    end;第二个问题:用bi = inttohex(d[i],2)
    该函数返回字符串,先拼字符串,再将整个字符串转换成整数即可