RTV forum PL | NewsGroups PL

Jak skonwertować 64-bitową liczbę na ciąg znaków w AVR C bez ulltoa()?

AVR C poszukiwany odpowiednik funkcji ulltoa()

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonwertować 64-bitową liczbę na ciąg znaków w AVR C bez ulltoa()?

Goto page 1, 2  Next

Bo(o)t manager
Guest

Sun Mar 06, 2016 6:10 pm   



Cześć!
Mam mały problem, otóż bawię się z termometrem DS18b20 i udało mi
się dopisać do biblioteki odczytywanie numerów seryjnych(z pomocą
tablicy). Chciałbym zrobić to za pomocą zmiennej 64bitowej(łatwiej mi
będzie porównywać numery seryjne(w każdym razie tak mi się wydaje)) i tu
mam problem - konwersja ultoa() obsługuje max. 32 bitowe liczby, a ja
potrzebuję przekonwertować 64bity(dla wyświetlacza). Niestety ulltoa()
brak. Kompilator to avrgcc.
Ma ktoś z Was pomysł jak to ugryźć? Bo mnie na razie do głowy
wpadł pomysł na podzielenie w/w zmiennej na 2 zmienne 32bitowe i potem na
babranie się z wyświetlaniem tego, ale może da się łatwiej?

--
Pozdrawiam
Bo(o)t manager

platformowe głupki
Guest

Sun Mar 06, 2016 6:21 pm   



przepraszam za śmiałość, ale gdzie tu jest pytanie?

Arkadiusz Kaczmarek
Guest

Sun Mar 06, 2016 6:45 pm   



W dniu 2016-03-06 o 18:21, platformowe głupki pisze:
Quote:
przepraszam za śmiałość, ale gdzie tu jest pytanie?
To takie zdanie, gzie na końcu jest " ? " Smile

Widziałem tam takie Razz

Sebastian Biały
Guest

Sun Mar 06, 2016 6:46 pm   



On 2016-03-06 18:10, Bo(o)t manager wrote:
Quote:
Cześć!
Mam mały problem, otóż bawię się z termometrem DS18b20 i udało mi
się dopisać do biblioteki odczytywanie numerów seryjnych(z pomocą
tablicy). Chciałbym zrobić to za pomocą zmiennej 64bitowej(łatwiej mi
będzie porównywać numery seryjne(w każdym razie tak mi się wydaje)) i tu
mam problem - konwersja ultoa()

Po pierwsze dlaczego ultoa ma pomagać a komparacji numerów seryjnych?

Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.

Bo(o)t manager
Guest

Sun Mar 06, 2016 7:50 pm   



On Sun, 06 Mar 2016 18:46:54 +0100, Sebastian Biały napisał/a:

Quote:
On 2016-03-06 18:10, Bo(o)t manager wrote:
[ciach]

Po pierwsze dlaczego ultoa ma pomagać a komparacji numerów seryjnych?

Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.

To do odpluskwiania przy okazji(składam te parę bajtów do kupy i
wyświetlam), a poza tym wydaje mi się że łatwiej było by porównywać dwie
64bitowe zmienne niż dwie tablice 8 bajtowe.

--
Pozdrawiam
Bo(o)t manager

Sebastian Biały
Guest

Sun Mar 06, 2016 8:07 pm   



On 2016-03-06 19:50, Bo(o)t manager wrote:
Quote:
Po pierwsze dlaczego ultoa ma pomagać a komparacji numerów seryjnych?
Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.
To do odpluskwiania przy okazji(składam te parę bajtów do kupy i
wyświetlam)

Tak samo jest w hex. O tyle lepiej że zajmuje mniej miejsca i czasu cpu.
Prezentacja tych numerów w dec jest absurdalna bo nie ma to żadnych
zalet za to ma wady (np. jest dłuższe).

Quote:
, a poza tym wydaje mi się że łatwiej było by porównywać dwie
64bitowe zmienne niż dwie tablice 8 bajtowe.

A jaka jest róznica między nimi? 8 bajtów to 64 bity.

Ja widze że próbujesz skonwertować do napisów dwie liczby i porównać
*napisy*. Gorzej chyba nie da się już zrobić.

Porównaj 8 bajtów i koniec.

Bo(o)t manager
Guest

Sun Mar 06, 2016 8:31 pm   



On Sun, 06 Mar 2016 19:50:46 +0100, Bo(o)t manager napisał/a:

Quote:
On Sun, 06 Mar 2016 18:46:54 +0100, Sebastian Biały napisał/a:

On 2016-03-06 18:10, Bo(o)t manager wrote:
[ciach]

Po pierwsze dlaczego ultoa ma pomagać a komparacji numerów seryjnych?

Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.

To do odpluskwiania przy okazji(składam te parę bajtów do kupy i
wyświetlam), a poza tym wydaje mi się że łatwiej było by porównywać dwie
64bitowe zmienne niż dwie tablice 8 bajtowe.
Samo ultoa do komparacji raczej nie pomoże, ale jak wiem co mi się dzieje

w środku(co widzę na lcd to mi pomaga).(to tak gwoli wyjaśnienia)




--
Pozdrawiam
Bo(o)t manager

Bo(o)t manager
Guest

Sun Mar 06, 2016 9:29 pm   



On Sun, 06 Mar 2016 20:07:40 +0100, Sebastian Biały napisał/a:

Quote:
On 2016-03-06 19:50, Bo(o)t manager wrote:
Po pierwsze dlaczego ultoa ma pomagać a komparacji numerów seryjnych?
Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.
To do odpluskwiania przy okazji(składam te parę bajtów do kupy i
wyświetlam)

Tak samo jest w hex. O tyle lepiej że zajmuje mniej miejsca i czasu cpu.
Prezentacja tych numerów w dec jest absurdalna bo nie ma to żadnych
zalet za to ma wady (np. jest dłuższe).

, a poza tym wydaje mi się że łatwiej było by porównywać dwie 64bitowe
zmienne niż dwie tablice 8 bajtowe.

A jaka jest róznica między nimi? 8 bajtów to 64 bity.

Ja widze że próbujesz skonwertować do napisów dwie liczby i porównać
*napisy*. Gorzej chyba nie da się już zrobić.

Porównaj 8 bajtów i koniec.
Chciałem to zrobić trochę inaczej: utworzyłem 64b uinta.

Potem chciałem zrobić tak:
dokleić na końcu bajt z tablicy potem uinta przesunąć w lewo o 8 bitów,
znów dokleić na końcu, znów przesunać itd.
Na końcu mam 64 bitowego uinta do porównania z drugim u64 tym w epromie.
Ale faktycznie może porównać tablice bajt po bajcie.

--
Pozdrawiam
Bo(o)t manager

Waldek Hebisch
Guest

Mon Mar 07, 2016 5:32 am   



"Bo(o)t manager" <bo.o.t_manager@wytnijtopoczta.wp.pl> wrote:
Quote:
On Sun, 06 Mar 2016 20:07:40 +0100, Sebastian Bia?y napisa?/a:

On 2016-03-06 19:50, Bo(o)t manager wrote:
Po pierwsze dlaczego ultoa ma pomaga? a komparacji numer?w seryjnych?
Po drugie numery seryjne 1Wire sa naturalnie prezentowane w hex.
To do odpluskwiania przy okazji(sk?adam te par? bajt?w do kupy i
wy?wietlam)

Tak samo jest w hex. O tyle lepiej ?e zajmuje mniej miejsca i czasu cpu.
Prezentacja tych numer?w w dec jest absurdalna bo nie ma to ?adnych
zalet za to ma wady (np. jest d?u?sze).

, a poza tym wydaje mi si? ?e ?atwiej by?o by por?wnywa? dwie 64bitowe
zmienne ni? dwie tablice 8 bajtowe.

A jaka jest r?znica mi?dzy nimi? 8 bajt?w to 64 bity.

Ja widze ?e pr?bujesz skonwertowa? do napis?w dwie liczby i por?wna?
*napisy*. Gorzej chyba nie da si? ju? zrobi?.

Por?wnaj 8 bajt?w i koniec.
Chcia?em to zrobi? troch? inaczej: utworzy?em 64b uinta.
Potem chcia?em zrobi? tak:
doklei? na ko?cu bajt z tablicy potem uinta przesun?? w lewo o 8 bit?w,
zn?w doklei? na ko?cu, zn?w przesuna? itd.
Na ko?cu mam 64 bitowego uinta do por?wnania z drugim u64 tym w epromie.
Ale faktycznie mo?e por?wna? tablice bajt po bajcie.


Nie rozumiem co kombinujesz: jak masz tablice 8 bajtow i uint64_t
to po prostu wzywasz memcmp. Jak chcesz przerobic jedno na
drugie to wzywasz memcpy.

--
Waldek Hebisch

Piotr Gałka
Guest

Mon Mar 07, 2016 11:26 am   



Użytkownik "Bo(o)t manager" <bo.o.t_manager@WYTNIJTOpoczta.wp.pl> napisał w
wiadomości news:1jguqc-16k.ln1@autostopem.przez.galaktyke.org...
Quote:
Ale faktycznie może porównać tablice bajt po bajcie.

na PC pod Builderem jakbym miał porównać dwie tablice (byte t1[8], t2[8]) to

zrobiłbym: if(*(qword*)t1 == *(qword*)t2)... (typy byte i qword to moje
typedef).
P.G.

J.F.
Guest

Mon Mar 07, 2016 11:41 am   



Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:nbjl0r$55a$1$PiotrGalka@news.chmurka.net...
Quote:
Użytkownik "Bo(o)t manager" <bo.o.t_manager@WYTNIJTOpoczta.wp.pl
napisał w Ale faktycznie może porównać tablice bajt po bajcie.
na PC pod Builderem jakbym miał porównać dwie tablice (byte t1[8],
t2[8]) to zrobiłbym: if(*(qword*)t1 == *(qword*)t2)... (typy byte i
qword to moje typedef).

Ale czy AVR przepusci ten qword ?

W 16-bitowym uP C moze nie miec zadnego 64-bitowego typu.

J.

Piotr Gałka
Guest

Mon Mar 07, 2016 11:46 am   



Użytkownik "J.F." <jfox_xnospamx@poczta.onet.pl> napisał w wiadomości
news:56dd5ad7$0$699$65785112@news.neostrada.pl...
Quote:
Użytkownik "Piotr Gałka" napisał w wiadomości grup
dyskusyjnych:nbjl0r$55a$1$PiotrGalka@news.chmurka.net...
Użytkownik "Bo(o)t manager" <bo.o.t_manager@WYTNIJTOpoczta.wp.pl> napisał
w Ale faktycznie może porównać tablice bajt po bajcie.
na PC pod Builderem jakbym miał porównać dwie tablice (byte t1[8], t2[8])
to zrobiłbym: if(*(qword*)t1 == *(qword*)t2)... (typy byte i qword to moje
typedef).

Ale czy AVR przepusci ten qword ?

W 16-bitowym uP C moze nie miec zadnego 64-bitowego typu.

Wychodziło, że ma jakiś typ 64 bitowy ale pisząc nie chciałem szukać jaka

nazwa występowała.
P.G.

Marek
Guest

Mon Mar 07, 2016 2:47 pm   



On Mon, 7 Mar 2016 11:41:27 +0100, "J.F."
<jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
W 16-bitowym uP C moze nie miec zadnego 64-bitowego typu.

Szczególnie, że ten AVR jest 8 bitowy

--
Marek

Bo(o)t manager
Guest

Mon Mar 07, 2016 4:10 pm   



On Mon, 07 Mar 2016 11:46:49 +0100, Piotr Gałka napisał/a:

[ciach]
Quote:
Wychodziło, że ma jakiś typ 64 bitowy ale pisząc nie chciałem szukać
jaka nazwa występowała.
P.G.

Dokładnie to uint64_t z biblioteki inttypes.h



--
Pozdrawiam
Bo(o)t manager

Piotr Gałka
Guest

Mon Mar 07, 2016 4:12 pm   



Użytkownik "Marek" <fake@fakeemail.com> napisał w wiadomości
news:almarsoft.9089103313276510279@news.neostrada.pl...
Quote:
On Mon, 7 Mar 2016 11:41:27 +0100, "J.F." <jfox_xnospamx@poczta.onet.pl
wrote:
W 16-bitowym uP C moze nie miec zadnego 64-bitowego typu.

Szczególnie, że ten AVR jest 8 bitowy

Poszukałem.

Cytat z autora wątku:
----------------
Chciałem to zrobić trochę inaczej: utworzyłem 64b uinta.
----------------
Znaczy, że ma jakiegoś 64 bitowego uinta.
P.G.

Goto page 1, 2  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak skonwertować 64-bitową liczbę na ciąg znaków w AVR C bez ulltoa()?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map