man/data_processing
man · Veri İşleme

$ crc32

Bölüm 1 · Veri İşleme

32-bit Döngüsel Artıklık Denetimi (Cyclic Redundancy Check) gerçekleştirir.

SÖZDİZİMİ

package require Tcl 8.2
package require crc32 ?1.3?

::crc::crc32 ?-format format? ?-seed value? [ -channel chan | -filename file | message ]
::crc::Crc32Init ?seed?
::crc::Crc32Update token data
::crc::Crc32Final token

AÇIKLAMA

Bu paket, NAACCR adresinde sağlanan bilgilere dayanarak CRC-32 algoritmasının bir Tcl uygulamasını sunar. Eğer critcl paketi veya Trf paketi mevcutsa, kontrol toplamı (checksum) hesaplamasını hızlandırmak için dahili olarak derlenmiş bir sürüm kullanılır.

KOMUTLAR

::crc::crc32 ?-format format? ?-seed value? [ -channel chan | -filename file | message ]

Bu komut; bir dize verisi (string), bir kanal veya dosya adı alır ve CRC-32 algoritması kullanılarak hesaplanan bir kontrol toplamı değerini döndürür. Sonuç, sağlanan format(n) belirteci kullanılarak biçimlendirilir. Varsayılan davranış, değeri işaretsiz bir tamsayı (format %u) olarak döndürmektir.

SEÇENEKLER

  • -channel name: Bir kanaldan okunan veriler için kontrol toplamı döndürür. Komut, eof (dosya sonu) true olana kadar kanaldan veri okuyacaktır. Bu hesaplama sırasında olayları (events) işleyebilmeniz gerekiyorsa PROGRAMLAMA ARAYÜZÜ bölümüne bakın.
  • -filename name: Belirtilen dosyayı açan, kodlamayı binary olarak ayarlayan ve ardından -channel seçeneği kullanılmış gibi davranan kolaylaştırıcı bir seçenektir. Dosya işlem tamamlandığında kapatılır.
  • -format string: Kontrol toplamını alternatif bir biçim şablonu kullanarak döndürür.
  • -seed value: CRC hesaplaması için alternatif bir tohum (seed) değeri seçer. Varsayılan değer 0xffffffff'dir. Bu, önce tüm yapıyı bir dizeye dönüştürmeden veri yapılarının CRC değerini hesaplamak için yararlı olabilir. Önceki üyenin CRC'si, bir sonraki üyenin CRC'sini hesaplamak için tohum olarak kullanılabilir. CRC-32 algoritmasının son bir XOR adımı içerdiğini unutmayın. Kademeli (incremental) işleme isteniyorsa, algoritmanın çıktısını daha sonraki işlemler için tohum olarak kullanmadan önce bu son XOR adımı geri alınmalıdır. Bu çalışma modu için tasarlanmış olan PROGRAMLAMA ARAYÜZÜ'nü kullanmak daha basit bir alternatiftir.

PROGRAMLAMA ARAYÜZÜ

CRC-32 paketi, kontrol toplamını, kendisine istenildiği zaman ek verilerin eklenebileceği bir bağlam (context) değişkeni kullanarak gerçekleştirebilir. Bu özellik, özellikle Tk uygulaması veya bir web sunucusu paketi gibi olay tabanlı ortamlarda son derece yararlıdır. Kontrol toplamı yapılacak veriler, bir fileevent işleyicisi sırasında ayrık bloklar halinde kademeli olarak işlenebilir. Bu yaklaşım, bir GUI uygulamasının etkileşimli yapısını iyileştirirken aşırı bellek tüketimini önlemeye de yardımcı olur.

  • ::crc::Crc32Init ?seed?: Yeni bir CRC32 bağlamı başlatır. Diğer işlevler için kullanılması gereken bir belirteç (token) kimliği döndürür. Gerekirse isteğe bağlı bir tohum (seed) değeri de belirtilebilir.
  • ::crc::Crc32Update token data: Belirteç (token) ile tanımlanan kontrol toplamına veri ekler. Örneğin Crc32Update $token "abcd" çağrısı yapmak, Crc32Update $token "ab" çağrısını takiben Crc32Update $token "cd" çağrısı yapmakla birebir eşdeğerdir (bkz. ÖRNEKLER bölümü).
  • ::crc::Crc32Final token: Kontrol toplamı değerini döndürür ve bu belirteç tarafından tutulan tüm kaynakları serbest bırakır. Bu komut tamamlandığında belirteç geçersiz olacaktır. Sonuç 32 bitlik bir tamsayı değeridir.

ÖRNEKLER

% crc::crc32 "Hello, World!"
3964322768

% crc::crc32 -format 0x%X "Hello, World!"
0xEC4AC3D0

% crc::crc32 -file crc32.tcl
483919716

% set tok [crc::Crc32Init]
% crc::Crc32Update $tok "Hello, "
% crc::Crc32Update $tok "World!"
% crc::Crc32Final $tok
3964322768

YAZARLAR

Pat Thoyts

HATALAR VE GERİ BİLDİRİM

Bu belge ve tanımladığı paket hatalar veya eksiklikler içerebilir. Lütfen bunları Tcllib SF Trackers platformunun crc kategorisinde bildirin. Paket veya belgeler için her türlü geliştirme önerilerinizi de oradan iletebilirsiniz.

AYRICA BAKINIZ

cksum(n), crc16(n), sum(n)