delphi 64位数的字符串怎么转换成8字节数组?

解决方案 »

  1.   


    // ACanvas为二维码的绘画控件,OrgPt为二维码的左上角坐标
    procedure EncodeQRData(ACanvas: TCanvas; OrgPt: TPoint; pResult: Pointer);
    const
      zQRBright: TColor = clWhite;
    var
      P: PDWORD;
      M: DWORD;
      I, X, Y: Integer;
    begin
      P:= pResult;
      for Y:= OrgPt.Y to (OrgPt.Y + 63) do begin
        X:= OrgPt.X;
        for I:= 0 to 1 do begin
          M:= $80000000;
          P^:= 0;
          repeat
            if ACanvas.Pixels[X, Y] = zQRBright then begin
              P^:= P^ or M;
            end;
            Inc(X);
            M:= M shr 1;
          until M = 0;
          Inc(P);
        end;
      end;
    end;