CRC-16/CCITT Sağlama Hesaplama
Onaltılık veri girin; CRC-16/CCITT sağlamasını hesaplayın.
Sonuç
Nasıl hesaplanır?
Girdi, bayt başına iki basamak olacak şekilde onaltılık baytlar olarak okunur; boşluklar yok sayılır. Yazmaç 0xFFFF ile başlar. Her bayt için bayt, yazmacın üst 8 bitiyle XOR'lanır, sonra yazmaç sekiz kez bir bit sola kaydırılır. Dışarı çıkan bit 1 olduğunda yazmaç 0x1021 polinomuyla XOR'lanır. Son baytın ardından yazmaç CRC değeridir ve 0x ile dört büyük harfli hex basamak olarak yazılır. Son bir XOR ve bit ters çevirme yoktur; CCITT-FALSE varyantı bu demektir. Basamak sayısı tek olan, 0x önekli ya da hex olmayan karakter içeren girdide sonuç üretilmez.
Örnek hesaplama
123456789 metni 31 32 33 34 35 36 37 38 39 ASCII baytlarıdır; bu yüzden 313233343536373839 girin. Yazmaç FFFF ile başlar. Dokuz baytın her biri üst bayta XOR'lanır ve 0x1021 ile sekiz kaydırma adımından geçirilerek yazmaç güncellenir. Dokuzuncu baytın ardından yazmaç 0x29B1 değerini taşır. Bu, bu varyant için yaygın kullanılan sınama dizgisidir; 0x29B1 sonucu, uygulamanızın uyduğunu doğrular. Tek bayt olan 00 ise başlangıç değeri sıfır olmadığı için 0xE1F0 verir.
Sık yapılan hatalar
- Metnin kendisini hex baytları yerine yazmak. Araç harfleri dönüştürmez; 123456789 metni 313233343536373839 olarak girilmelidir, rakamlar olarak değil.
- 0x öneki eklemek. Bazı dönüştürücülerin aksine bu araç 0x'i reddeder ve sonuç vermez; önek koymayın.
- Tek sayıda hex basamağı girmek. Her bayt iki basamak ister, bu yüzden 313 reddedilir; baştaki sıfır kastediliyorsa 0313 yazın.
- Başka bir CRC-16 varyantıyla kıyaslamak. XMODEM, Modbus ve diğerleri farklı başlangıç değeri, polinom ya da bit sırası kullanır; aynı veri farklı sonuç verir.
- Çerçevedeki CRC baytlarını da girdiye katıp aynı sonucu beklemek. Protokol aksini söylemedikçe CRC yalnızca veri bölümü üzerinden hesaplanır.
Bu hesaplama hakkında
CRC-16/CCITT-FALSE, bir mesajı 0x1021 (x¹⁶+x¹²+x⁵+1) üreteç polinomuyla ve sıfır olmayan 0xFFFF başlangıç yazmaç değeriyle polinom bölmesinden geçirerek sağlama işlevi gören 16 bitlik bir kalan üretir. Sıfır olmayan başlangıç değeri, bu varyantı daha yalın CRC-16/CCITT'ten (başlangıcı 0x0000) ayırır ve sıfırla başlayan başlangıç değerinin kaçıracağı baştaki-sıfır hatalarını yakalamasını sağlar.
CRC-16/IBM-3740 veya CRC-16/AUTOSAR adlarıyla da bilinen bu varyant seri ve gömülü protokollerde yaygındır; XMODEM'in CRC'si ise 0x0000'dan başlar, bu yüzden protokolünüzün hangi başlangıç değerini beklediğini kontrol edin. Bu nedenle ürün yazılımı ve protokol mühendislerinin genel bir “CRC-16” yerine belirli polinom ve başlangıç değeriyle eşleşen bir hesap makinesine ihtiyacı vardır.
Bu faydalı oldu mu?
En fazla 3 tepki seçebilirsiniz.
Popüler hesaplayıcılar
Kredi Hesaplama
Aylık taksit, toplam faiz ve ödeme planını hesaplayın.
Yüzde Hesaplama
Yüzde değişim, indirim ve oran hesaplamaları.
İndirim Hesaplama
İndirimli fiyatı, kazancı ve indirim tutarını hesaplayın.
Vücut Kitle Endeksi (VKİ)
Boy ve kiloya göre vücut kitle endeksini hesaplayın.
Yaş Hesaplama
Doğum tarihinden bugüne tam yıl, ay ve gün cinsinden yaşınızı hesaplayın.
Bileşik Faiz Hesaplama
Ana para, faiz oranı ve süreye göre bileşik faizle nihai tutarı hesaplayın.
Tüm Hesaplayıcılar
- Kredi Hesaplama
- Kar Hesaplama
- İndirim Hesaplama
- Vücut Kitle Endeksi (VKİ)
- Yüzde Hesaplama
- İdeal Kilo Hesaplama
- Yaş Hesaplama
- Gebelik Hesaplama
- Bileşik Faiz Hesaplama
- Bazal Metabolizma (BMR) Hesaplama
- Bahşiş Hesaplama
- Yakıt Maliyeti Hesaplama
- Tarih Farkı Hesaplama
- Uyku Döngüsü Hesaplama
- Günlük Su İhtiyacı Hesaplama
- Basit Faiz Hesaplama
- Kalp Atış Hızı Bölgeleri Hesaplama
- Koşu Temposu Hesaplama
- Evcil Hayvan Yaşı Hesaplama
- Kalori Yakım Hesaplama
- Makro Besin Dağılımı Hesaplama
- TDEE (Toplam Günlük Enerji İhtiyacı) Hesaplama
- Bel-Kalça Oranı Hesaplama
- Takdir ve Teşekkür Belgesi Hesaplama
- Tek Tekrar Maksimum (1RM) Hesaplama
- Yumurtlama (Ovülasyon) Hesaplama
- Elektrik Maliyeti Hesaplama
- Birim Fiyat Hesaplama
- Tasarruf Hedefi Hesaplama
- Başabaş Noktası Hesaplama
- Boya Hesaplama
- Vize-Final Ortalama Hesaplama
- İş Günü Hesaplama
- Saat Farkı (Süre) Hesaplama
- Yakıt Tüketimi Hesaplama
- Sıcaklık Birimi Çevirici
- Fayans (Seramik) Hesaplama
- En-Boy Oranı Hesaplama
- Roma Rakamı Çevirici
- Hedef Kilo Süresi Hesaplama
- Maaş Çevirici (Saatlik-Yıllık)
- Kredi Kartı Doğrulama (Luhn)
- Vücut Yüzey Alanı (BSA) Hesaplama
- Hissedilen Sıcaklık Hesaplama
- Ohm Kanunu Hesaplama
- PPI (Piksel Yoğunluğu) Hesaplama
- Molar Kütle Hesaplama
- Burç Hesaplama (Batı + Çin)
- IBAN Doğrulama
- Ayakkabı Numarası Dönüştürücü
- Ülke Bilgisi (Telefon Kodu) Sorgulama
- Saat Dilimi Farkı (Dünya Saati)
- CAGR (Bileşik Yıllık Büyüme) Hesaplama
- 72 Kuralı Hesaplama
- Kandaki Alkol (Promil) Hesaplama
- Yağsız Vücut Kütlesi (LBM) Hesaplama
- Pisagor Teoremi Hesaplama
- Hız Birimi Dönüştürücü
- İndirme Süresi Hesaplama
- Tarih Hesaplama (Gün Ekle/Çıkar)
Hesaplayıcı bulunamadı
Yorumlar (1)
Araç sonucu tek bir 16 bitlik değer olarak yazar; hatta gerçekte hangi sırayla gideceğini ise protokolünüz belirler. 0x29B1 için bazı protokoller 29 B1, bazıları B1 29 sırasıyla gönderir; bu yüzden bir paket kaydıyla karşılaştırmadan önce bayt sırasını şartnameden doğrulayın. Cihazınız buradaki çıktıdan farklı bir değer veriyorsa önce farkın verinizden değil CRC türünden gelip gelmediğine bakın. En çok hangi protokol ya da CRC türüyle çalışıyorsunuz?