URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9479
[ Назад ]

Исходное сообщение
"XOR к массиву *char"

Отправлено greenetc , 07-Июн-12 13:27 
Здравствуйте. Есть массив
char mas[] = "\x02\x52\x46\x03";
требуется в конец массива дописать результат
mas[0]^mas[1]^mas[2]^mas[3]

Набросал такую вот функцию:

дано

void status()
{
    char mas[] = "\x02\x52\x46\x03";
    checksum(&mas[0]);
}

char * checksum(char * data)
{
    char sum=0;
    for (int i = 0; i<sizeof(data); i++)
        sum ^= data[i];
    printf("checksum = %02X\n",sum);
    return 0;
}

а в результате sum = 00 всегда получается ...


Содержание

Сообщения в этом обсуждении
"XOR к массиву *char"
Отправлено Andrey Mitrofanov , 07-Июн-12 13:56 
> а в результате sum = 00 всегда получается ...

Надод! Кладите железо на жаровни -- мододёжи надь про перепонтение буферов... вкладывать.


"XOR к массиву *char"
Отправлено greenetc , 07-Июн-12 14:05 
>> а в результате sum = 00 всегда получается ...
> Надод! Кладите железо на жаровни -- мододёжи надь про перепонтение буферов... вкладывать.

та понял уже .. мерси
    
        while (*data){
        sum ^= *data++;
    }


"XOR к массиву *char"
Отправлено Andrey Mitrofanov , 07-Июн-12 14:09 

> пере понт ение буферов

%))) ...и все молчат?


"XOR к массиву *char"
Отправлено Alex_S , 08-Июн-12 05:03 
>> пере понт ение буферов
> %))) ...и все молчат?

а чо молчат..

функция возвращает 0 , потому что явно сказано - return 0;

а по условию , вкратце - в конец массива дописать ничего нельзя.
только динамически создавать новый и копировать.


"XOR к массиву *char"
Отправлено Alex_S , 08-Июн-12 05:05 
а , ну и sizeof(data) - это размер пойнтера, а не массива