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



Teraz jest 15 sty 2025, o 21:50


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 16 cze 2013, o 18:00 
Offline
Nowy

Dołączył(a): 16 cze 2013
Posty: 6
Pomógł: 0

Witam!

Mam dane w tablicy np:
bufor1[] = {0, x, 1, 4, 8, 2}
bufor2[] = {0, x, 4, A, F, F}
bufor3[] = {0, x, 4, 3, 7, 3, 0, x, 3, 2, 1,9, 0, x, A, 7, 4, D}

Pytanie polega na tym jak dane z takiej tablicy "scalić" jako wartość zmiennej int. Tzn:

int wynik1 = 0x1482
int wynik2 = 0x4AFF
int wynik3a = 0x4373
int wynik3b = 0x3219
int wynik3c = 0xA74D

Próbowałem takim kodem podpatrzonym w innym temacie ale nie działa on prawidłowo:

uint16_t wynik1 = 0;
for (int a=0;a<6;a++)
{
wynik1 <<= 8;
wynik1 |= bufor1[a];
}

Kombinowałem również innymi sposobami ale nadal nic z tego nie wychodzi, a na pewno nie jest to nic skomplikowanego :|

Dziękuję za pomoc i pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2013, o 18:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

Nie tak prosto. Najpierw poczytaj o systemie hexadecymalnym i jak go zamienić na system dziesiętny.
0x nie dajesz do przetwarzania, tylko do wykrywania nowej liczby.

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2013, o 18:36 
Offline
Moderator
Avatar użytkownika

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

czaras87 napisał(a):
a na pewno nie jest to nic skomplikowanego


dokładnie - najpierw musisz zamienić HEX w postaci ASCII na liczbę binarną i po bólu

_________________
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: 16 cze 2013, o 18:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sty 2013
Posty: 65
Zbananowany użytkownik

Pomógł: 4

http://www.asciitohex.com/ może się przyda ;)

_________________
Tylko głupi wie wszystko....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2013, o 18:48 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 758
Pomógł: 9

0x1234 itp. liczby to zawsze 16 bitów. Więc tak:
uint16_t wynik;

wynik = 1*4096 + 2*256 +3*16+ 4*1;

Przełóż to sobie na swój kod. :)

_________________
ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 cze 2013, o 19:33 
Offline
Użytkownik

Dołączył(a): 14 sty 2013
Posty: 36
Pomógł: 2

Tak sprawdziłem na szybko i sądzę, że działa. Można ładniej zapisać ale chodzi o przykład.

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: 16 cze 2013, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 24 mar 2012
Posty: 72
Pomógł: 5

A ja stworzyłem takiego potworka. Bardzo mnie to zaciekawiło i postanowiłem coś napisać. Nie wygląda może zbyt pięknie ale działa. Sprawdzałem na ATB. Efekt jest taki, że wyświetla wszystkie liczby z tej tablicy na lcd. Nie wiem czy Ci się ta sieczka na cokolwiek przyda ale jak już nabazgrałem to wrzucam:


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


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 cze 2013, o 19:40 
Offline
Nowy

Dołączył(a): 16 cze 2013
Posty: 6
Pomógł: 0

Dziękuję Wszystkim za tak szybki odzew, a zwłaszcza banicie 17 bo jego kod po kilku drobnych zmianach spisuje się wyśmienicie. :) Jeszcze raz dzięki! Problem rozwiązany.



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO