'51 a konwersja typow
Masz problem? Zapytaj na forum elektroda.pl
From: "angel" <mmxREMOVEME_at_nospam_szas.z.pl>
Subject: '51 a konwersja typow
Date: Mon, 5 Apr 2004 18:04:06 +0200
Witam, kolejny problem stanal na mojej drodze, przyzwyczajony jestem ze w C
istnieja funkcje do konwersji typow jednakze w moim kompilatorze ich nie ma.
Problem dotyczy konwersji floata na char.
int na char robie w ten sposob:
LCDInt(int n)
{
unsigned char buffer[2];
int temp;
temp = n;
buffer[0] = (temp/100)+48;
buffer[1] = (temp/10)+48;
buffer[2] = (temp%10)+48;
putch_lcd(buffer[0]);
putch_lcd(buffer[1]);
putch_lcd(buffer[2]);
}
ale co do float na char nie mam pomyslu, ktos moze mi podpowie jak ogarnac
floata ?
--
GG: 833104
Mariusz, MMX
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!news.nask.pl!news.cyf-kr.edu.pl!not-for-mai
From: "Andy" <anokWYTNIJ_at_nospam_ceti.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 5 Apr 2004 18:16:16 +0200
Użytkownik "angel" <mmxREMOVEME_at_nospam_szas.z.pl> napisał w wiadomości news:c4s07g$5ct$1_at_nospam_nemesis.news.tpi.pl...
Witam, kolejny problem stanal na mojej drodze, przyzwyczajony jestem ze w C
istnieja funkcje do konwersji typow jednakze w moim kompilatorze ich nie ma.
Problem dotyczy konwersji floata na char.
...
moze jest sprintf ?
a moze nie potrzebujesz floata ?
--
Andrzej
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.man.poznan.pl!opal.icpnet.pl!topaz.icpnet.pl!not-for-mai
From: "Przemysław Szeremiota" <przemeksWYWALTO_at_nospam_WYWALTO.icpnet.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 5 Apr 2004 19:04:28 +0200
Użytkownik "angel" <mmxREMOVEME_at_nospam_szas.z.pl> napisał w wiadomości
news:c4s07g$5ct$1_at_nospam_nemesis.news.tpi.pl...
unsigned char buffer[2];
int temp;
(...)
buffer[0] = (temp/100)+48;
buffer[1] = (temp/10)+48;
buffer[2] = (temp%10)+48;
?????
Wyprowadźcie mnie z błędu, ale dwuelementowa tablica elementów typu unsigned
char nie może być tak indeksowana! Przecież buffer[2] najprawdopodobniej (bo
to zależy jeszcze od wyrównania zmiennych a pamięci) pokrywa się z obszarem
pierwszego bajtu zmiennej temp! Tutaj chyba fuksem to działa, bo ten obszar
jest nadpisywany wtedy, kiedy temp jest już nieużywany.
Słowem, albo ktoś oszczędza na każdym bajcie, albo kod jest ewidentnie
błędny!!
Co sądzicie?
Pozdrawiam,
Przemysław Szeremiota
========
Path: news-archive.icm.edu.pl!news.rmf.pl!poznan.rmf.pl!news.man.poznan.pl!news.nask.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: BLE_Maciek <i80c586_at_nospam_cyberspace_NO_SPAM_.org>
Subject: Re: '51 a konwersja typow
Date: Mon, 05 Apr 2004 19:42:04 +0200
Mon, 5 Apr 2004 19:04:28 +0200 jednostka biologiczna o nazwie
"Przemysław Szeremiota" <przemeksWYWALTO_at_nospam_WYWALTO.icpnet.pl> wyslala do
portu 119 jednego z serwerow news nastepujace dane:
unsigned char buffer[2];
int temp;
buffer[2] = (temp%10)+48;
Wyprowadźcie mnie z błędu, ale dwuelementowa tablica elementów typu unsigned
char nie może być tak indeksowana! Przecież buffer[2] najprawdopodobniej (bo
to zależy jeszcze od wyrównania zmiennych a pamięci) pokrywa się z obszarem
pierwszego bajtu zmiennej temp!
Najprawdopodobniej. Tak czy inaczej buffer[2] wyjezdza za tablice
Słowem, albo ktoś oszczędza na każdym bajcie, albo kod jest ewidentnie
błędny!!
Zgadza sie.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!not-for-mai
From: "Alek" <alek02AUA_at_nospam_AUApoczta.onet.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 5 Apr 2004 19:30:42 +0200
Użytkownik "angel" <mmxREMOVEME_at_nospam_szas.z.pl> napisał w wiadomości
news:c4s07g$5ct$1_at_nospam_nemesis.news.tpi.pl...
Witam, kolejny problem stanal na mojej drodze, przyzwyczajony jestem
ze w C
istnieja funkcje do konwersji typow jednakze w moim kompilatorze ich
nie ma.
Problem dotyczy konwersji floata na char.
int na char robie w ten sposob:
LCDInt(int n)
{
unsigned char buffer[2];
int temp;
temp = n;
buffer[0] = (temp/100)+48;
buffer[1] = (temp/10)+48;
buffer[2] = (temp%10)+48;
I to działa? Bo jeśli to jest C, to ciutek żeś za tablicę wyjechał...
Coprawda tu pewnie będzie działać i nawet się nie rozjedzie póki
kompilator przydzieli pamięć na temp dokładnie za buffer.
putch_lcd(buffer[0]);
putch_lcd(buffer[1]);
putch_lcd(buffer[2]);
}
========
Path: news-archive.icm.edu.pl!news.rmf.pl!news.ipartners.pl!newsfeed.gazeta.pl!news.nask.pl!uw.edu.pl!news.pw.edu.pl!not-for-mai
From: Zbych <abuse_at_nospam_onet.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 05 Apr 2004 19:48:51 +0200
Pewnego dnia angel przemówił ludzkim głosem:
ale co do float na char nie mam pomyslu, ktos moze mi podpowie jak ogarnac
floata ?
Najprościej będzie chyba przerzutować na zmienną bajtową (o ile liczba
się zmieści) i dopiero z niej wydzielić poszczególne znaki.
unsigned char buf[3];
float a;
char b;
a=5.0;
b=a;
buf[2]=b/100+'0';
buf[1]=b/10+'0';
buf[0]=b%10+'0';
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.pw.edu.pl!not-for-mai
From: Zbych <abuse_at_nospam_onet.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 05 Apr 2004 19:52:02 +0200
Całość powinna działać pod warunkiem, że mamy liczbę nieujemną. W
przeciwnym wypadku najpierw sprawdziłbym znak i ewentualnie wyświetlił
minus, a potem zmienił znak liczby na dodatni i wydzielał z niej
poszczególne cyfry.
--
*Warning*: Dates in Calendar are closer than they appear.
### /mail: bzb<at>poczta<dot>onet<dot>pl/ ###
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!lublin.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: '51 a konwersja typow
Date: Mon, 05 Apr 2004 21:35:20 +0200
On Mon, 5 Apr 2004 18:04:06 +0200, angel wrote:
Witam, kolejny problem stanal na mojej drodze, przyzwyczajony jestem ze w C
istnieja funkcje do konwersji typow jednakze w moim kompilatorze ich nie ma.
Problem dotyczy konwersji floata na char.
A nie masz w bibliotece funkcji ftoa() ?
int na char robie w ten sposob:
LCDInt(int n)
{
unsigned char buffer[2];
int temp;
temp = n;
buffer[0] = (temp/100)+48;
buffer[1] = (temp/10)+48;
buffer[2] = (temp%10)+48;
putch_lcd(buffer[0]);
putch_lcd(buffer[1]);
putch_lcd(buffer[2]);
}
Po co ci ten buffer ? [zreszta za krotki]
No i chyba sobie nie radzisz, bo co sie pokaze w srodku 123 ?
ale co do float na char nie mam pomyslu, ktos moze mi podpowie jak ogarnac
floata ?
tak na goraco:
tempint=floor(data) ;
LCDint(tempint); // ale prawdziwy, a nie tylko 3 cyfry
data = (data-tempint)*10000 //wstawic zalozona dokladnosc
tempint=floor(data) ;
if tempint>0
{ lcdchar('.') ; lcdint(tempint) ;}
J.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.studio.net.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "angel" <angelremoveme_at_nospam_szas.dnc.pl>
Subject: Re: '51 a konwersja typow
Date: Tue, 6 Apr 2004 01:38:32 +0200
No czlowiek uczy sie cale zycie, o dziwo dziala ale pewnie przypadkiem jak
piszecie :)
Dziwne ze kompilator nie naplul ze element wyjezdza poza rozmiar no ale
mniejsza o wiekszosc.
Posiedzialem podlubalem i wydlubalem oczywiscie nie ma jeszcze funkcji do
przesuwania kursora etc
ale sama czesc do pokazania floata dziala :) bynajmniej widze znak za
zankiem na uarcie.
char buff[80];
int n;
void piszznak(char *znak) {
while( *znak ) {
t6963data=*znak;
printf("%c",*znak); //Na uart test
*znak++;
}
}
void piszcyfry(float flo) {
n = sprintf (buff, "%0.1f", flo); //dokladnosc do dziesietnej czesci
piszznak(buff);
}
piszznak("Pisze ");
piszcyfry(312.2);
Dzieki za pomoc i wskazowki, walcze dalej i to pewnie nie ostatni problem na
jaki trafilem :)
Reg,
Mariusz.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!n-f-m!news.idn.org.pl!news.signoff.com.pl!news.pse.pl!mimuw.edu.pl!news.mimuw.edu.pl!newsfeed.tpinternet.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: '51 a konwersja typow
Date: Tue, 06 Apr 2004 02:57:43 +0200
On Tue, 6 Apr 2004 01:38:32 +0200, angel wrote:
Dziwne ze kompilator nie naplul ze element wyjezdza poza rozmiar no ale
mniejsza o wiekszosc.
Kompilator C tego z zalozenia nie robi ! To programista ma wiedziec co
robi :-)
ale sama czesc do pokazania floata dziala :) bynajmniej widze znak za
zankiem na uarcie.
printf("%c",*znak); //Na uart test
Uprzedzam ze printf jest funkcja dosc wielka - pewnie pare kB zajmuje
..
J.
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!news.mega.net.pl!news.task.gda.pl!newsfeed00.sul.t-online.de!newsfeed01.sul.t-online.de!t-online.de!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: "angel" <mmxREMOVEME_at_nospam_szas.z.pl>
Subject: Re: '51 a konwersja typow
Date: Tue, 6 Apr 2004 10:14:30 +0200
"J.F." <jfox_nospam_at_nospam_poczta.onet.pl> wrote in message
news:8hv3701cnhkbadpa52stpg1479jeivncfo_at_nospam_4ax.com...
Uprzedzam ze printf jest funkcja dosc wielka - pewnie pare kB zajmuje
Pozbede sie jej przed ladowaniem programu na procka, uzywam jej na
symulatorze :)
Zauwazylem ze ten nieszczesny float rowniez generuje spora ilosc
kodu,jednakze w asm nie moglem sobie dac rady ze zmiennym przecinkiem.
Zastanawiam sie jeszcze nad jednym, skoro uzyje wyswietlacza graficznego a
nie chce korzystac z brzydkiego pokracznego generatora znakow to bede musial
oprogramowac kazdy nie standardowy znak ktory ma pokazac wyswietlacz ? Tzn
stworzyc mapy dla cyfr 0 - 9 i pozniej w odpowiedniej funkcji gdy odbierze
ona dana cyfre pchnac na wyswietlacz odpowiednie komendy i mape zamiast
samej cyfry?
Pzdr,
Mariusz.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.tpinternet.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mai
From: Marcin E. Hamerla <Xmehamerla_at_nospam_Xpro.Xonet.Xpl.remove_X>
Subject: Re: '51 a konwersja typow
Date: Thu, 08 Apr 2004 10:12:31 +0200
angel napisal(a):
Uprzedzam ze printf jest funkcja dosc wielka - pewnie pare kB zajmuje
Pozbede sie jej przed ladowaniem programu na procka, uzywam jej na
symulatorze :)
Zauwazylem ze ten nieszczesny float rowniez generuje spora ilosc
kodu,jednakze w asm nie moglem sobie dac rady ze zmiennym przecinkiem.
Zastanawiam sie jeszcze nad jednym, skoro uzyje wyswietlacza graficznego a
nie chce korzystac z brzydkiego pokracznego generatora znakow to bede musial
oprogramowac kazdy nie standardowy znak ktory ma pokazac wyswietlacz ? Tzn
stworzyc mapy dla cyfr 0 - 9 i pozniej w odpowiedniej funkcji gdy odbierze
ona dana cyfre pchnac na wyswietlacz odpowiednie komendy i mape zamiast
samej cyfry?
A jestes pewien, ze potrzebujesz floatow? Z mojego doswiadczenia
wynika, ze w znakomitej wiekszosci przypadkow mozesz je ominac....
--
Pozdrowienia, Marcin E. Hamerla
"Every day I make the world a little bit worse."
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!n-f-m!news.idn.org.pl!news.signoff.com.pl!news.pse.pl!mimuw.edu.pl!news.mimuw.edu.pl!news.internetia.pl!news.nask.pl!news.atman.pl!not-for-mai
From: Krzysztof Rudnik <rudnik_at_nospam_kki.net.pl>
Subject: Re: '51 a konwersja typow
Date: Tue, 06 Apr 2004 11:12:29 +0200
angel wrote:
No czlowiek uczy sie cale zycie, o dziwo dziala ale pewnie przypadkiem jak
piszecie :)
Dziwne ze kompilator nie naplul ze element wyjezdza poza rozmiar no ale
mniejsza o wiekszosc.
Posiedzialem podlubalem i wydlubalem oczywiscie nie ma jeszcze funkcji do
przesuwania kursora etc
ale sama czesc do pokazania floata dziala :) bynajmniej widze znak za
zankiem na uarcie.
char buff[80];
int n;
void piszznak(char *znak) {
while( *znak ) {
t6963data=*znak;
printf("%c",*znak); //Na uart test
*znak++;
Chyba lepiej znak++; //- bez tej *
Gwiazdka w zasadzie nie przeszkadza,
ale troche zaciemnia.
Krzysiek Rudnik
========
Path: news-archive.icm.edu.pl!news2.icm.edu.pl!n-f-m!news.idn.org.pl!news.signoff.com.pl!news.pse.pl!mimuw.edu.pl!news.mimuw.edu.pl!news.internetia.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mai
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: '51 a konwersja typow
Date: Tue, 06 Apr 2004 14:02:29 +0200
On Tue, 6 Apr 2004 01:38:32 +0200, angel wrote:
char buff[80];
51 czy 52 ? Bo na dzien dobry dosc spora ilosc ram zuzywasz :-)
void piszznak(char *znak) {
while( *znak ) {
t6963data=*znak;
printf("%c",*znak); //Na uart test
na test moze byc, ale jeden znak to putc,putch lub putchar
J.
========
Path: news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsfeed.gazeta.pl!opal.futuro.pl!not-for-mai