Damian – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Damian – C / C++ – Fórum – Programujte.comDamian – C / C++ – Fórum – Programujte.com

 

Martin
~ Anonymní uživatel
1600 příspěvků
28. 8. 2012   #1
-
0
-

Ahoj,

mám znak

char a=8;

a já potřebuji ten char převést na float na úrovni  bitů.

Lze i u float použít memcpy?

char a=8;

float b;

memcpy(&b,&a,1);

Nahlásit jako SPAM
IP: 188.120.221.–
KIIV
~ Moderátor
+43
God of flame
28. 8. 2012   #2
-
0
-

na urovni bitu? wtf?

nestacilo by    b = a; ?  ono se to uz o prevody postara.. a kdyz tam mas ascii znak 8 tak i ve floatu bude 8...

neco jineho by to bylo kdyby tam byl znak '8' pak by se musel odecist znak '0'

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1600 příspěvků
28. 8. 2012   #3
-
0
-

Ono totiž mám pole charů...

char a[4]...

a tohle pole chci vložit do jednoho floatu

tak mě napadlo memcpy

Nahlásit jako SPAM
IP: 188.120.221.–
KIIV
~ Moderátor
+43
God of flame
28. 8. 2012   #4
-
0
-

to trosku meni situaci ze... sou funkce na prevod   atof napriklad...  nicmene tam musi byt retezec ve stylu "121.543" a tak

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
nergal+1
Návštěvník
28. 8. 2012   #5
-
0
-

ja som to pochopil tak. ze Martin sa snazi o nieco taketo:

char a[4];
float f;

f = *(float*)(&a);

treba dat pozor aby to pole bolo dost velke :)

ale na co to komu je neviem :)

Nahlásit jako SPAM
IP: 85.135.180.–
viem že neviem čo viem
28. 8. 2012   #6
-
0
-

#1 Martin
zkus si nastudovat implementaci float (podle IEEE-754). Myslím, že prosté zkopírování pole char do proměnné float nepřinese výsledek, který očekáváš.

K implementaci float více např na http://www.eecs.berkeley.edu/~wkahan/ieee754status/IEEE754.PDF

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Martin
~ Anonymní uživatel
1600 příspěvků
28. 8. 2012   #7
-
0
-

Děkuji

Nahlásit jako SPAM
IP: 188.120.221.–
crazy
~ Moderátor
+10
Grafoman
28. 8. 2012   #8
-
0
-

#7 Martin
a co použít union?

union a {
	char c[4];
	float f;
};

a un;
un.c = 8;

a pak používat un.f
Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Martin
~ Anonymní uživatel
1600 příspěvků
29. 8. 2012   #9
-
0
-

Ano, sice je to podobné tomu memcpy ze začátku ,ale je to zajímavá konstrukce

Nahlásit jako SPAM
IP: 188.120.221.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý