已知有字符串‘0101001100011111010011111’
我想把它按照上面格式写在二进制文件中。如何写啊?
我只会写数字,比如 f='15',用inttohex(strtoint('$'+f), 8). 那么上面的二进制流如何写呢?

解决方案 »

  1.   

    // s 为字符串
    var
      f: file of Byte;
      i: integer;
      b: byte;
    begin
      AssignFile(f, 文件名);
      Reset(f);
      b := 0;
      for i:=1 to Length(s) do
      begin
        b := b*2 + Ord(s[i])-Ord('0'); // 取每个字节的值
        if (i mod 8)=0 then // 每个字节(8位)写一次,也可以每4个字节写一次
        begin
          Write( f, b );
          b := 0; // 写完后重置
        end;
      end;
      if (i mod 8)<>0 then // 如果位数不是8的倍数,需要再写一次
        Write( f, b );
      CloseFile( f );
    end;
      

  2.   

    通常声明一个FILE变量
    写入的数据就是二进制型的
    楼上的应该可以解决你的问题
    如果写入数据与预期的不同请注意编码顺序