|
|
Zahl X in binär umwandeln und auf 2 Byte aufteilen, aber WI |
|
space |

Forum-Anfänger
|
 |
Beiträge: 37
|
 |
|
 |
Anmeldedatum: 12.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2011, 18:52
Titel: Zahl X in binär umwandeln und auf 2 Byte aufteilen, aber WI
|
 |
Hallo Forengemeinde,
ich habe auch mal wieder eine Frage, dieses Mal zum Thema Umrechnung und Zuweisung:
Beispiel:
Ich habe die Zahl 520, diese möchte ich ins Binärsystem umrechnen. Ich habe schon nach int2bin und num2bin gesucht aber nicht wirklich verstanden, ob mir das weiter helfen kann.
Danach möchte ich diese Zahl (bin) auf 2 Byte (2* 8Bit) (HighByte und LowByte) aufteilen und wieder zurück ins dezimal rechnen (bin2dec)!
Kann mir jemand helfen, wie ich die diese Zahl umrechenen kann und sie aufteile??
Vielen Dank im Vorraus!
Gruß
|
|
|
|
|
space |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 37
|
 |
|
 |
Anmeldedatum: 12.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2011, 19:24
Titel:
|
 |
Hallo,
entschuldigt bitte meine Frage, ich habe sie selber lösen können.
5 Minuten länger die HILFE lesen,...
b1 = bitand(bitshift(x,-8,32),255)
b0 = bitand(x,255)
Gruß
|
|
|
punkNgrind |

Forum-Century
|
 |
Beiträge: 136
|
 |
|
 |
Anmeldedatum: 10.03.11
|
 |
|
 |
Wohnort: Hamburg
|
 |
|
 |
Version: R2014b
|
 |
|
|
 |
|
Verfasst am: 10.07.2011, 12:05
Titel:
|
 |
du kannst übrigens mit:
eine Dezimalzahl in eine Binären String umwandeln.
[/code]
|
|
|
space |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 37
|
 |
|
 |
Anmeldedatum: 12.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 00:09
Titel:
|
 |
Hallo Leute,
ich habe eine Erweiterung meiner obigen Problemstellung:
Die Konvertierung von Dec. in Binär und das aufteilen in 2 Byte klappt soweit!
Nun möchte ich aber das genau umgedreht machen. Ich habe 2 Byte die mir 2 Zahlen z.B. binär eine 60 (LowByte) und eine 7(HighByte) zurück geben. Diese möchte ich zu einem "16Bit-block" vereinen und diesen wieder ins Dec. umrechnen. So das der Wert 1852 ausgegeben wird.
Ich komm gerade echt nicht drauf, wie ich das obere umdrehen muss, dass das so funktioniert.
Hoffe mir kann jemand helfen!
Gruß
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 01:41
Titel:
|
 |
Hallo space,
In welchem Format liegen die Inputs vor? "binär eine 60" ist mir nicht klar. Wenn es ein Binäre-String ist, kannst Du ihn zunöchst per BIN2DEC in einen DOUBLE umwandeln:
Gruß, Jan
|
|
|
space |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 37
|
 |
|
 |
Anmeldedatum: 12.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 08:26
Titel:
|
 |
Hi Jan,
ich "lese" mit fread(s,2)
dadurch bekomme ich als LowByte eine 60 und HighByte eine 7 (z.B.).
Kann ich per fread nur EIN spezielles Byte auslesen, dass das erste gelesene das LowByte und das zweite das HighByte ist!
Falls das nicht geht, wie mach ich die Zuweisung auf die 2 Variablen, wenn ich mit fread(s,2) lese? Will damit noch weiter rechnen.
Vielen Dank für deine Hilfe!
Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 09:29
Titel:
|
 |
Hallo space,
Zitat: |
ich "lese" mit fread(s,2)
dadurch bekomme ich als LowByte eine 60 und HighByte eine 7 |
Dieser Befehl liest zwei DOUBLEs. Bist Du sicher, dass Du dadurch die HighBytes and LowBytes bekommst??
Zitat: |
Kann ich per fread nur EIN spezielles Byte auslesen, dass das erste gelesene das LowByte und das zweite das HighByte ist! |
Lies doch mal den Hilfe-Text des FREAD Befehls. Das ist meist effizienter als das Forum zu befragen.
Wenn im File das LowByte zuerst kommt, ist es wahrscheinlich im IEEE-BE-Format geschrieben, also "Big Endian". Dann kannst Du den 16 Bit Integer so einlesen:
Das erzeugt automatisch einen DOUBLE Wert. Wenn Du aus irgendwelchen Gründen die einzelnen Bytes brauchst:
Damit is Value ein [1 x 2] UINT8 Vektor. Um dann den Dezimalwert zu bekommen:
Hilft Dir das weiter?
Gruß, Jan
|
|
|
space |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 37
|
 |
|
 |
Anmeldedatum: 12.05.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.07.2011, 10:14
Titel:
|
 |
Hi Jan,
Danke für deine Antowort!
die Hilfe zu fread hatte ich schon gelesen. Da stand aber nur, das ich angeben kann, wieviele Bytes ich auslesen will und nicht ob es möglich ist, ein spezielles zu lesen.
Aber deine Antort hilft mir sehr weiter, danke hierfür! Ich dacht, dass fread nur 1 Byt bzw. 8 Bit lesen kann. Aber das ganz natürlich als ein 16 Bit zu definieren ist einfach und effektiv! Wäre ich nie drauf gekommen!
THX
Grüße
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 15.07.2011, 00:03
Titel:
|
 |
Hallo space,
Und auch ich kann noch etwas aus dem Hilfe-Text von FREAD lernen: Ich hatte behauptet, dass "fread(fid, 2)" zwei DOUBLE liest, also 128 bit. Das ist falsch! Der Default-Wert für die Precision ist 'uchar', so dass der Befehl also doch zwei Bytes liest und diese als DOUBLEs an Matlab zurückgibt.
Gruß, Jan
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|