Q&A

  • [재질문848번]xor연산을 사용하는데..
안녕하세요.

xor연산을 써서 해볼려 했는데 Error가 나더군요

제가 작성한 코드는 다음과 같습니다.



const Key = $000000ff;

ExclusiveTemp := edPass.Text;

for i := 0 to Length(ExclusiveTemp) do

begin ExclusiveStr := ExclusiveStr + (ExclusiveTemp[i] xor Key); end;



여기서 xor부분에서 에라가 발생하는군요

그래서 저는 ExclusiveTemp[i]값도 16진수 값이어야 하는줄 알았습니다.

2  COMMENTS
  • Profile
    안치봉 1999.04.30 00:39
    이호선 wrote:

    > 안녕하세요.

    > xor연산을 써서 해볼려 했는데 Error가 나더군요

    > 제가 작성한 코드는 다음과 같습니다.

    >

    > const Key = $000000ff;

    > ExclusiveTemp := edPass.Text;

    > for i := 0 to Length(ExclusiveTemp) do

    > begin ExclusiveStr := ExclusiveStr + (ExclusiveTemp[i] xor Key); end;

    >

    > 여기서 xor부분에서 에라가 발생하는군요

    > 그래서 저는 ExclusiveTemp[i]값도 16진수 값이어야 하는줄 알았습니다.





    안녕하세요.



    포문을 i := 0 부터 돌리는데....문제는 string 형에서 string[0] 번째 에는 그 스트링의 길이가 들어있습니다. 그리고 델파이 도움말에 의하면 string[0]을 직접사용할수는 없다고 합니다.



    ExclusiveTemp[0] 은 잘못된것입니다.



  • Profile
    전철호 1999.04.30 01:06
    안치봉 wrote:

    > 이호선 wrote:

    > > 안녕하세요.

    > > xor연산을 써서 해볼려 했는데 Error가 나더군요

    > > 제가 작성한 코드는 다음과 같습니다.

    > >

    > > const Key = $000000ff;

    > > ExclusiveTemp := edPass.Text;

    > > for i := 0 to Length(ExclusiveTemp) do

    > > begin ExclusiveStr := ExclusiveStr + (ExclusiveTemp[i] xor Key); end;

    > >

    > > 여기서 xor부분에서 에라가 발생하는군요

    > > 그래서 저는 ExclusiveTemp[i]값도 16진수 값이어야 하는줄 알았습니다.

    >

    >

    > 안녕하세요.

    >

    > 포문을 i := 0 부터 돌리는데....문제는 string 형에서 string[0] 번째 에는 그 스트링의 길이가 들어있습니다. 그리고 델파이 도움말에 의하면 string[0]을 직접사용할수는 없다고 합니다.

    >

    > ExclusiveTemp[0] 은 잘못된것입니다.

    >



    const Key = $000000ff; -> const Key = 255;



    ExclusiveTemp[i] -> Ord(ExclusiveTemp[i])



    형태로 바꾼 다음 실행을 해보세요.

    그리고 XOR나 Shr는 두바이트형 변수형을 사용하여 연산을 하면

    내부에서는 Hex값으로 계산이 됩니다.