CCS C Hex to Decimal Çevirme

Başlatan Yunus Emre, 27 Mart 2022, 01:34:50

Yunus Emre

Merhaba, hex olarak aldığım 1 byte veriyi nasıl decimale çevirebilirim ?

aRci

Merhaba, fikir vermesi için pic basic de aşşağıdaki yontemle hex den desimale çevirebiliyorsunuz.
mantık byte değişkeninin soldan 4 bitini 10 ile çarpıp sağdaki 4 bit ile toplamaktan ibaret. alt daki kodda ilk olarak zaman değişkeninin 4 bit sağa kaydırıp 10 ile çarpıyor ve sonra zaman değişkeninin soldan 4 biti maskelenerek sağdaki 4 bit elde ediliyor daha sonrada iki sonuc toplanıyor. Bu yolu izleyebilirsiniz.

ZAMAN   = ((ZAMAN >> 4) *10) + (ZAMAN & 15)

ete

Öncelikle bu ihtiyacın nereden kaynaklandığını sormam gerek. Bu şekilde bir çevirme ihtiyacı normalde olmaması gerek. Sayılar taban değerlerine göre zaten otomatik çevriliyor derleyicilerde.
Basic de sayıyı önünde bir işaret olmaksızın yazarsan yada kullanırsan desimaldir. Önüne $ işareti koyarsan Hexadesimaldir (Hex) önüne %işareti koyarsan oda binary dir. Benzer durumun C dilinde de olduğunu yada olması gerektiğini düşünüyorum. Bu şekilde çevirme ihtiyacın olmamalı diye düşünüyorum. Tabiiki ihtiyacın nerden geldiğini ve amacını bilmeden. Arci nin belirttiği yöntem uygun. Yüksek değerlikli 4 biti alıp 4 bit kaydır ve 10 ile çarp sonra düşük değerikli bitleri buna ekle. Böylece sayı HEX formattan desimal formata dönüşmüş olur.
Yada yanlızca görsel amaçlı bu işi yapıyorsan, aç windows un hesap makinesini Programlayıcı modunu seç orada sayıları her formatta görebilirsin. hex seç sayını gir altında desimal değerini onun altında binary değerini görebilirsin.
Dedim ya ihtiyaç nerden kaynaklanıyor ise ona uygun çözüm bulmak lazım.

Ete

Yunus Emre

Yanıtlarınız için teşekkürler. 8+8 bit olarak veri gönderen ı2c haberleşme kullanan bir modül ile haberleşme neticesinde bu durum hasıl oldu. Lcd ekran ve seri haberleşmede direk % işareti ile çevirme yapılıyor. Ama işin içerisinde hesaplamada yapılacağı için bir türlü hex olarak aldığım veriyi decimal çevirememiştim. Uzun yoldan bir yol bulup yaptım ama sizlerin verdiği yöntemi de en kısa sürede deneyeceğim.

aRci

Merhaba;
burada bit kaydırma ile çözüm bulmayı denedik aslında başka nasıl yapılabilir bilmiyorum.
şimdi kendim bir proje yapıyorum ve buna benzer ama sıralı değilde karışık düzende bir değişken içeriinden 2 veya daha fazla bit değeri okumanız gereken bir durum var. örneğin değişken adı Ayar olsun. siz bu ayar adlı değişkenin 2.3.4. ve 5. bitini okumak istediğinizde maskeleme ve kaydırma yapmanız gerekiyor.

aslında tek bit olsa symbol ile bit bit veri okuna bilir ve bu değeri direk bir değişkenin içeriği olarak kullan bilrisiniz.

SYMBOL Oku = Ayar.0

bu satırla ayar adlı değişkenin sıfırıncı bitini ayrı bir değişken adı vermiş oldunuz. bu sayede Oku = 0 derseniz Ayar değişkeninin sıfırıncı biti sıfır olacaktır. bunu 2 veya daha fazla bite aktaramıyorum varsa bir yöntem ben bilmiyorum. belki bu şekilde tanımlama ile dönüştürme gereği kalmadan verilere ulaşabiliriz.

Yunus Emre

#5
Bende CCS C benzer yöntemi kullanarak çözdüm hex to dec için yaşadığım problemi. Bit kaydırma yöntemini denedim ama maalesef başarılı olamadım.

Powered by EzPortal