Synopsis
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
____________________________________________________________________________________________________
Description
Bu paket, http://www.naaccr.org/standard/crc32/document.html 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ılabilir.
Commands
::crc::crc32 ?-format format? ?-seed value? [ -channel chan | -filename file | message ]
Bu komut, 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.
Options
-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.
Programming Interface
CRC-32 paketi, kontrol toplamını, kendisine istenildiği zaman ek verilerin eklenebileceği bir bağlam (context) değişkeni kullanarak gerçekleştirir. Bu, özellikle Tk uygulaması veya bir web sunucusu paketi gibi olay tabanlı bir ortamda yararlıdır. Kontrol toplamı yapılacak veriler, bir fileevent işleyicisi sırasında ayrık bloklar halinde kademeli olarak işlenebilir. Bu, bir GUI uygulamasının etkileşimli yapısını iyileştirebilir ve aşırı bellek tüketimini önlemeye yardımcı olabilir.
::crc::Crc32Init ?seed? Yeni bir CRC32 bağlamı başlatır. Kalan işlevler için kullanılması gereken bir belirteç (token) kimliği döndürür. Gerekirse isteğe bağlı bir tohum (seed) belirtilebilir.
::crc::Crc32Update token data
Belirteç (token) ile tanımlanan kontrol toplamına veri ekler. Crc32Update $token "abcd" çağrısı yapmak, Crc32Update $token "ab" çağrısını takiben Crc32Update $token "cb" çağrısı yapmakla eşdeğerdir. ÖRNEKLER bölümüne bakın.
::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.
Examples
% 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
Authors
Pat Thoyts
BUGS, IDEAS, FEEDBACK Bu belge ve tanımladığı paket şüphesiz hatalar ve başka sorunlar içerecektir. Lütfen bunları Tcllib SF Trackers'ın [http://sourceforge.net/tracker/?group_id=12883] crc kategorisinde bildirin. Lütfen paket ve/veya belgeler için sahip olabileceğiniz her türlü geliştirme fikrini de bildirin.
See Also
cksum(n), crc16(n), sum(n)
Keywords
checksum, cksum, crc, crc32, cyclic redundancy check, data integrity, security
Category
Hashes, checksums, and encryption
Copyright
Copyright (c) 2002, Pat Thoyts
crc 1.3 crc32(n)