sum := 0;
    str := '$PGRMIX';
    for i := 2 to length(str) do//这里length(str)是否为7?
    begin
      sum := sum xor byte(str[i]);//0 xor 80 是不是把他们化话二进制?就是00000000 xor 10000000 = 10000000 sum=80?
    end;
    str := str+ '*' + inttohex(sum, 2) + #13#10;//str=$PGRMIX*50后面#13#10什么意思 怎么加

解决方案 »

  1.   

    sum := 0;
    str := '$PGRMIX';
    for i := 2 to length(str) do    //这里length(str)是否为7?
    begin
      sum := sum xor byte(str[i]);  
    end;
    str := str+ '*' + inttohex(sum, 2) + #13#10;//str=$PGRMIX*50后面#13#10什么意思 怎么加//这里length(str)是否为7?
    是的。//0 xor 80 是不是把他们化话二进制?就是00000000 xor 10000000 = 10000000
    是的。
    sum=80?
    不是。sum = str[2] xor str[3] xor ... str[length(str)];//str=$PGRMIX*50后面#13#10什么意思 怎么加
    inttohex(sum, 2)是将sum值转换成二位的十六进制字符串
    #13是ASCII码为13的字符(即回车符)
    #10是ASCII码为10的字符(即换行符)