char zusammenfügen

  • Themenstarter Themenstarter seru
  • Beginndatum Beginndatum
Nein hatte ich vergessen!!
Danke jetzt funktoniert's :)
Um noch mal zum eigentlichen Thema des Threads zurückzukommen:
Kann man mit memcpy ein ASCII Zeichen aus einem Array in eine float variable speichern
 
Ein ASCII-Zeichen ist i.d.R. 1 Byte gross, eine float-Variable 4 Byte. Aber auch abgesehen davon gibt es keinen Grund da über memcpy zu gehen, du kannst einfach den Wert der float-Variablen zuweisen (was zwar keinen Sinn macht, aber wems beliebt 3 Bytes zu verschwenden...).
 
Ja eigentlich möchte ich aus 4 ASCII Zeichen die in Array Felder stehen eine float Zahl machen
da hätte ich dann ja die 4 byte nicht verschwendet
 
Kann ich den von dir vorgeschlagenen Befehl auch mit einzelnen Feldern eines Arrays machen.
Also ich würde nur die Felder 27,28,29,30 von einem 96 Felder großem Array brauchen.
Code:

char m_sBufRes[96]; //array aus dem ich die Felder brauche

m_sBufRes[27]
m_sBufRes[28]
m_sBufRes[29]
m_sBufRes[30]

nur diese Felder würde ich aus dem Array m_sBufRes[96] holen wollen und in eine float variable schreiben
 
Ok aber ich kann nicht 4 Felder gleichzeitig in ein float laden. Da müsste ich zunächst die Werte in 4 verschiedene Floats laden
und anschließend die Werte in den Floats mit 100,10,1,0.1 multiplizieren damit zb. wenn
m_sBufRes[27] = '0'
m_sBufRes[28] = '3'
m_sBufRes[29 ] = '3'
m_sBufRes[30] = '7'
damit in meinem gewünschten Float 33,7 steht ?

müsste eig mit int auch gehn dann verbrauche ich nicht so viel Speicher
bitte um Antwort
 
Sowohl long int als auch float benötigen beide 4 Byte Speicher jedoch kann ein Integer keine Kommazahlen speichern. Bei deinem Aufbau kommst du nicht drum herum einfach mit 100, 10, 1, 0.1 zu multiplizieren und das als float zu speichern.
 
Ok alles klar herzlichen Dank
auch an alle anderen die auf meine Fragestellungen gepostet haben
 
Es wäre vielleicht eine Überlegung wert ob du nicht vielleicht die Daten über die serielle Schnittstelle binär senden möchtest statt als String.
 
Zurück