现在要往读写卡器的第2磁道写入数据,其中包含了字母,第2磁道不可以接受字母,想过把字母换成二进制写入,但实现不了,有那位高手可以帮帮我吗,最好可以给个程序范例,谢谢拉,谢谢拉,急求,不胜感激

解决方案 »

  1.   

    faysu12() ( ) 信誉:100  2006-05-09 08:51:00  得分: 0  
     
     
       就是想把他转成数字,比如,字母A 的值就是65吗,但是他说格式不匹配,麻烦,磁道接受的是字符串,但是二进制数据如何转为字符串呢?
      
     
    先对二进制数进行Base64编码,即可
      

  2.   

    const
     Codes64 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+/';
    ..........
    //编码
    function Encode64(S: string): string;
    var
      i: Integer;
      a: Integer;
      x: Integer;
      b: Integer;
    begin
      Result := '';
      a := 0;
      b := 0;
      for i := 1 to Length(s) do
      begin
        x := Ord(s[i]);
        b := b * 256 + x;
        a := a + 8;
        while a >= 6 do
        begin
          a := a - 6;
          x := b div (1 shl a);
          b := b mod (1 shl a);
          Result := Result + Codes64[x + 1];
        end;
      end;
      if a > 0 then
      begin
        x := b shl (6 - a);
        Result := Result + Codes64[x + 1];
      end;
    end;//解码
    function Decode64(S: string): string;
    var
      i: Integer;
      a: Integer;
      x: Integer;
      b: Integer;
    begin
      Result := '';
      a := 0;
      b := 0;
      for i := 1 to Length(s) do
      begin
        x := Pos(s[i], codes64) - 1;
        if x >= 0 then
        begin
          b := b * 64 + x;
          a := a + 6;
          if a >= 8 then
          begin
            a := a - 8;
            x := b shr a;
            b := b mod (1 shl a);
            x := x mod 256;
            Result := Result + chr(x);
          end;
        end
        else
          Exit;
      end;
    end;