bu c kodu ne iş yapıyor (kısa)

Başlatan erkan614, 08 Kasım 2008, 14:58:40

erkan614

int EscapeString(char *src, char src_len, char *dest)
{
// The following function copies and encodes the first
// src_len characters from *src into *dest. This
// encoding is necessary for module command formats.
// The resulting string is null terminated. The size
// of this string is the function return value.
// ---------------------------------------------------
char src_idx, dest_idx;
// Save space for the command header and size bytes
// ------------------------------------------------
dest_idx = 2;
// Loop through source string and copy/encode
// ------------------------------------------
for (src_idx = 0; src_idx < src_len; src_idx++)
{
if (src[src_idx] > 127)
{
dest[dest_idx++] = 0xFE;
}/*if*/
dest[dest_idx++] = (src[src_idx] & 0x7F);
}/*for*/
// Add null terminator
// -------------------
dest[dest_idx] = 0;
// Add command header
// ------------------
dest[0] = 0xFF;
dest[1] = dest_idx – 2;
// Return escape string size
// -------------------------
return dest_idx;
}
Figure 11: Command Conversion Code


iyi çalşmalar
bu c kodunda nasıl bir işlem yapıldığını yani ne yapıldığını anlatabilirmisiniz
offf niye c öğrenmedimki

f_machine

açıklamaya göre ;

bu fonksiyon src_len sayısı kadar karakteri src dizisinden alıp dest
dizisine kopyalar ve şifreler.Bu şifreleme modül komut formatı için gereklidir.
Oluşturulan string null ile sonlandırılır(0).Stringin uzunluğu fonksiyonun geri dönüş  değeridir.

Koda gelirsek;

for döngüsü src_len sayısı kadar döner.Eğer src dizisindeki o andaki değer
127 den büyükse dest dizisine 0xfe kopyalanır.Küçükse src içerisindeki sayı
0x7f ile ve'lenerek dest dizisine kopyalanır.Bu kopyalama işlemleri
dest dizisinin 3. elemanından başlıyor bu arada.Daha sonra dizinin sonuna
null(0) koymuş ve boş olan 1. elemana 0xff ve 2.elemanı dizinin uzunluğunu 2 ile veya 'layıp koymuş.
sonra return ile dizinin uzunluğunu geri döndürmüş...