플로트 타입 배열을 암호화하고 같은 기능으로 다시 디코드하려고합니다. 웹에서 여러 스레드를 읽었지만 나에게 행복하게 해주는 해결책을 찾지 못했습니다. float-type-pointer를 char *에 캐스트하고 그 결과를 char 형식의 키로 XOR하려고 시도했습니다. 여기 내 인코딩 기능 :플로트 배열을 XOR로 암호화
const char* key = "mykey";
int keylen = sizeof(key)/sizeof(key[0]);
void encodeData(float *data, int size)
{
int bytes = (int)(sizeof(float)/sizeof(char));
for(int i=0; i<size; i++)
{
for(int j=0; j<bytes; j++)
{
data[i] = *(((char *)&data[i]) + j)^(key[(bytes*i)%keylen]);
}
}
}
컴파일 작동하지만 난 EN- 및 디코딩 후 같은 결과를 얻을 수 없습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
당신이 포인터에'sizeof' 사용, 당신은 그것이 가리키는 어떤 포인터의 크기를 얻을 수 없습니다. 'strlen'을 사용하여 문자열의 길이를 얻거나'key'를 배열로 만드십시오. –
과제의 왼편이 잘못되었습니다. 'data (i) ='대신에'* ((char *) & data [i]) + j) = ' –
또한 sizeof (char)는 C 표준 스펙에 의해 항상' 1 '. –