Цитата(nokepp @ Feb 7 2011, 18:20)

да нет....я примерно понимаю, о чем идет речь. ))) buf[i]= {0x03 0x03 0x03} или в бинарном будет нагляднее видно, что 3 байта.
при объявлении массива, число в квадратных скобочках задает его размер - т.е. число элементов.
Далее при обращении к этому массиву число в квадратных скобочках обозначает уже не число элементов, а порядковый номер элемента ("И"ндекс потому собсно и обзывают его "i").
Объявляем массив из трех элементов, обычно так:
char buf[ 3 ];
если требуется сразу проинициализировать элементы массива, то пишем сразу при объявлении:
char buf = {10, 20, 30};
после объявления переобъявить его с целью изменения размера - нельзя,
можно только обращаться к его элементам. Любой массив начинается с элемента с номером 0.
Для объявленного и проинициализированного выше массива из 3-х элементов
buf[0] <--- элемент с номером 0, равен 10
buf[1] <--- элемент с номером 1, равен 20
buf[2] <--- элемент с номером 2, равен 30
buf[i] - это элемент массива buf с номером i
пример заполнить массив из 8-ми элементов числами 0, 1, 2, 3, 4, 5, 6, 7:
Код
char buf[ 8 ]; // объявить массив из 8-ми элементов
char i;
for(i = 0; i < 8; i++)
{
buf[ i ] = i; // присвоить i-му элементу массива число i
}
Цитата
А кстати какая разница, как записывать. По идее она должна считать до 8 байт или я что-то все же не понял?
Большая - при расчете CRC количество символов тоже важно.
В примере который вам дали считается CRC для сообщения из строго 8 байт. И даже если массив у вас из 3-х элементов, там все равно CRC посчитается для 8-ми.
Цитата
Уже читаю Герберт Шилдт
Книга хорошая, прочитайте ее всю бегло - множество вопросов должно отпасть.