Endianlık Çevirme Hesaplama

Bir hex değeri girin; bayt sırasını çevirin.

Nasıl hesaplanır?

Araç, baştaki küçük harfli 0x önekini ve tüm boşlukları siler, kalanı onaltılık rakamlar olarak okur. Rakam sayısı tekse tam baytlara bölünebilmesi için başa bir 0 eklenir (0xABC, 0A BC baytlarına dönüşür). Ardından baytlar ters sırayla yazılır: [b₀ b₁ … bₙ] → [bₙ … b₁ b₀]. Her bayt bozulmaz; yalnızca bayt çiftlerinin sırası değişir, bir baytın içindeki iki rakamın sırası değişmez. Gösterilen onluk değer, çevrilmiş değerin değil girdiğiniz sayının (dolgudan sonraki halinin) karşılığıdır ve her uzunlukta tam olarak hesaplanır. Baştaki sıfır baytları sayılır: 00001234 çevrilince 0x34120000 olur. 0-9 ve a-f dışında bir karakter içeren girdi (# gibi) sonuç vermez.

Örnek hesaplama

0x12345678 değerini girin. Bu değer 12, 34, 56 ve 78 olmak üzere dört bayta ayrılır. Bayt sırası tersine çevrilince 78, 56, 34, 12 elde edilir; çevrilmiş değer 0x78563412 olur. Gösterilen onluk sayı ilk değere aittir: 0x12345678, 305419896 eder. Aynı dört bayt big-endian ya da little-endian okunduğunda iki farklı sayı çıkar: 305419896 veya 2018915346.

Bu örneği dene →

Sık yapılan hatalar

  • Baytları değil onaltılık rakamları ters çevirmek. 12345678 rakam rakam çevrilse 87654321 olurdu; doğru bayt çevirimi çiftleri bir arada tutar ve 78563412 verir.
  • Onluk sonucu çevrilmiş baytların değeri sanmak. Onluk satır, yazdığınız sayıya aittir; çevrilmiş değerin onluk karşılığı için çıktıyı tekrar girin.
  • Baştaki sıfır baytlarını atmak. 00001234 dört baytlık bir değerdir ve çevrilmişi 34120000 sıfırları sonda tutar; girdiyi 1234'e kısaltırsanız iki baytlık 3412 çıkar.
  • Tek sayıda rakam girip eksik basamağın sonda tamamlanacağını düşünmek. Araç başa sıfır ekler; ABC değeri ABC0 değil 0ABC sayılır.
  • Büyük harfli 0X öneki yazmak. Yalnızca küçük harfli 0x silinir; 0x yazın ya da öneki hiç koymayın.

Bu hesaplama hakkında

Endianlık, bir sistemin çok baytlı değerleri saklarken kullandığı bayt sırasını ifade eder: big-endian, en anlamlı baytı önce saklar (“ağ bayt sırası” olarak da bilinir, TCP/IP başlıklarında kullanılır); little-endian ise en az anlamlı baytı önce saklar (x86/x86-64'e ve çoğu ARM yapılandırmasına özgüdür). Çevirmek, bayt dizisini tersine çevirmek demektir — 0x12345678, 0x78563412 olur — ve altta yatan ondalık değer yalnızca bu yorumlardan birine karşılık gelir.

Ağ ve gömülü sistem/ürün yazılımı mühendisleri, bir paket yakalamasını, ikili dosya biçimini veya karma-endianlı sistemlerden gelen register dökümlerini okurken bununla sürekli karşılaşır; çünkü bayt sırasını yanlış okumak, belirgin bir hata yerine sessizce tamamen yanlış bir sayı üretir.

Bu faydalı oldu mu?

En fazla 3 tepki seçebilirsiniz.

Yorumlar (1)

  • Editör ekibi

    Kaç basamak yazdığınıza dikkat edin; çevirme, girdiğiniz haliyle tam baytlar üzerinde çalışır. Alan dört bayt genişliğindeyse 1234 değil 00001234 yazın: ilki 0x34120000'a, ikincisi 0x3412'ye döner ve sonuçlar farklıdır. Ondalık satır her zaman yazdığınız sayıya aittir; çevrilmiş değerin ondalığı gerekiyorsa onu ayrıca dönüştürün. Hangi protokol ya da dosya biçimiyle çalışıyorsunuz?

Popüler hesaplayıcılar

Tüm Hesaplayıcılar