Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 7 kwi 2026, o 05:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 13 lut 2014, o 22:03 
Offline
Nowy

Dołączył(a): 13 lut 2014
Posty: 9
Pomógł: 0

Jako, że to mój pierwszy post na tym forum: witam wszystkich:)

Mam pytanie:
mam liczbę, typu float uzyskaną z pewnego protokołu w postaci HEX np.:
0xBE09C0C1
Wiem, z kalkulatorów dostępnych w sieci, że jest to liczba = -0.134524

I tutaj pojawia się problem. Nie wiem jak przeliczyć tego HEXa na liczbę float.
W mikrokontrolerze mogę sobie to złożyć w liczbę 32 bitową (0xBE09C0C1), która dziesiętnie wynosi 3188310209, jednak jak z tej liczby uzyskać/przeliczyć na liczbę float?

Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 22:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lip 2013
Posty: 420
Lokalizacja: Kraków
Pomógł: 17

Coś przed chwilą znalazłem w sieci, ale nie wiem czy o to chodzi: http://sandbox.mc.edu/~bennet/cs110/flt/dtof.html

_________________
GreenBook i BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 22:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

trzeba zacząć przede wszystkim od poczytania - jak się w ogóle dokonuje zapisu liczb zmiennoprzecinkowych bo akurat czy będzie to wartość hex, dec, bin to nie ma tu żadnego znaczenia. Ale to gdybyś chciał to robić "ręcznie" ... jeśli zaś nie ręcznie to użyć konwersji za pomocą wskaźników - na typ float/double ....

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 22:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 lip 2013
Posty: 420
Lokalizacja: Kraków
Pomógł: 17

sempth napisał(a):
mam liczbę, typu float uzyskaną z pewnego protokołu w postaci HEX np.:
0xBE09C0C1
Wiem, z kalkulatorów dostępnych w sieci, że jest to liczba = -0.134524


mi wychodziło to samo :)

_________________
GreenBook i BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 22:51 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Wystarczy taka unia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Przykład użycia:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 23:03 
Offline
Nowy

Dołączył(a): 13 lut 2014
Posty: 9
Pomógł: 0

programek napisał(a):
Coś przed chwilą znalazłem w sieci, ale nie wiem czy o to chodzi: http://sandbox.mc.edu/~bennet/cs110/flt/dtof.html


Skomplikowana ta ręczna konwersja ;)


Za radą Mirka (wskaźniki...:D ), udało się:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Krauser też fajny sposób, dzięki:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 23:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Czy w takim razie współdzielenie obszaru pamięci przez unię nie byłoby równoważne jawnemu rzutowaniu...?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 23:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lut 2013
Posty: 223
Zbananowany użytkownik

Pomógł: 21

No nie bardzo ;)
Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Kod:
3188310209
3.18831e+009
-0.134524
-0.134524

_________________
Nie pisz komentarzy - dobry kod komentuje się sam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lut 2014, o 14:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 kwi 2013
Posty: 418
Lokalizacja: Rzeszów
Pomógł: 102

Ok racja ;)
W takim razie przepraszam za niepotrzebne zamieszanie w tym temacie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO