merhaba,

başlangıç-bitiş adresleri derken dosya içerisindeki konumlarını kastettiğinizi 
farzediyorum. asagidaki gibi basit bir C programıyla yapabilirsiniz. asagidaki 
kodu baska bir amaçla yazmıştım, byte-byte okumak çok verimli değil. bir kerede 
okuyup elinizdeki buffer'ı inceleyebilirsiniz.

eğer birden fazla sıfır olmayan bölge varsa bir array tanımlayıp if'in içinde 
bunu doldurabilirsiniz. baska bir değişkeni de flag olarak kullanıp, zaten bir 
sıfır olmayan bölgenin içinde olup olmadığınızı tutarsınız.

eğer dosyanın disk üzerindeki gerçek adresinden bahsediyorsanız lstat komutunu 
inceleyin.


FILE * pFile;
long lSize = 0;
long pos = 0;
char curChar;
char *buffer = NULL;
int ret_val = -1;
int baslangic, bitis = -1;

//dosyayi ac
pFile = fopen(DOSYA_ADI, "rb");
if(NULL == pFile)
{
perror("dosya acma hatasi ");
return -1;
}
//dosyanin boyutunu bul
ret_val = fseek(pFile, 0, SEEK_END);
if(0 != ret_val)
{
perror("dosya islemi hatasi #1");
fclose (pFile);
return -1;
}
lSize = ftell(pFile);
if(0 > lSize)
{
perror("dosya islemi hatasi #2");
fclose (pFile);
return -1;
}
//basa don
ret_val = fseek(pFile, 0, SEEK_SET);
if(0 != ret_val)
{
perror("dosya islemi hatasi #3");
fclose (pFile);
return -1;
}
//basindan itibaren oku
for(pos=0; pos<lSize; pos++)
{
ret_val = fread(&curChar, 1, 1, pFile);
if( 1 != ret_val )
{
perror("dosya okuma hatasi");
fclose (pFile);
return -1;
}
if(0 != curChar)
{
//burada istediginiz islemi yapabilirsiniz

//tek bir sifir olmayan boge varsa soyle yapilabilir
if(-1 == baslangic)
{
baslangic = pos;
bitis = pos;
}
else
{
bitis = pos;
}

}
}


 
Mustafa

[email protected]
www.aldemir.net


________________________________
 From: What you get is Not what you see <[email protected]>
To: Linux <[email protected]> 
Sent: Tuesday, May 29, 2012 2:00 PM
Subject: [Linux]  Hex dosya icerisindeki sifir olmayan bolgeler
 

Bir hex dump icerisinde sifir olmayan bolgelerin baslangic ve bitis adreslerini 
nasil bulabilirim?

_______________________________________________
Linux E-Posta Listesi
[email protected]
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux
_______________________________________________
Linux E-Posta Listesi
[email protected]
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Bu Listede neden bulunduğunuzu bilmiyorsanız veya artık bu listeden gelen 
e-postaları almak istemiyorsanız aşağıdaki bağlantı adresini kullanarak 1 
dakika içinde üyeliğinizi sonlandırabilirsiniz.
https://liste.linux.org.tr/mailman/listinfo/linux

Cevap