Laden...

EndiansByteArrayWriter - Bitwise Ops mit Float

Erstellt von Falke2000 vor 8 Jahren Letzter Beitrag vor 8 Jahren 1.401 Views
Thema geschlossen
F
Falke2000 Themenstarter:in
21 Beiträge seit 2015
vor 8 Jahren
EndiansByteArrayWriter - Bitwise Ops mit Float

Heya Leute!

Habe vor kurzen den Auftrag bekommen ToByteArray Methoden zu schreiben welche alle IntTypen (Int8 - Int64, UInt8 - UInt64) durchkleistert. Aber auch Single und Double soll dran glauben.

Leider glaub ich nicht so ganz an die Dinger xD

public static Byte[] ToBigEndianBytes(Int16 integer)
			{
				Byte[] p_byte_array = new Byte[2];
				p_byte_array[0] = (Byte)(integer >> 8);
				p_byte_array[1] = (Byte)(integer & 0x00FF);

				return p_byte_array;
			}

Das wäre die erste Lösung für 'n Int16.

public static Byte[] ToBigEndianBytes(Single single)
			{
				Byte[] p_byte_array = new Byte[2];
				p_byte_array[0] = (Byte)(single >> 8);
				p_byte_array[1] = (Byte)(single & 0x00FF);

				return p_byte_array;
			}

Da ich voll klug bin, probier ich das natürlich genauso mit Single. Mich überraschen die Compilererrors jetzt erst einmal nicht. Wobei ich es schon ein wenig blöd finde.

Laut IEEE 754 gibts es ja folgende Faustformel bei nem Single:

32 Bit komplett | 1 Bit Vorzeichen | 8 bit Exponent | 23 Bit Mantisse

Finde ich jetzt garnicht mal so kompliziert. Genau das Schema würde ich nun gerne entweder auf Big oder LittleEndian Basis in 'n ByteArray zuweisen. Da ich aber mit den BitWise Operatoren nicht arbeiten darf weiss ich nicht wie ich das anstellen soll ^^

W
872 Beiträge seit 2005
vor 8 Jahren

Reicht es nicht einfach, daß Du die normalen Methoden nimmst und danach prüfst, ob Du auf Little Endian bist und dann ein Array.Reverse() machst?

F
Falke2000 Themenstarter:in
21 Beiträge seit 2015
vor 8 Jahren

Reicht es nicht einfach, daß Du die normalen Methoden nimmst und danach prüfst, ob Du auf Little Endian bist und dann ein Array.Reverse() machst?

Nein leider nicht. Ich soll kein .Reverse() nutzen.
Außerdem bist du jetzt aber nicht auf das Bitwise Problem mit Single eingegangen oder?

16.834 Beiträge seit 2008
vor 8 Jahren

Es gibt System.Net.IPAddress.HostToNetworkOrder das alles kann.
Warum das Rad neu erfinden? Und wer verbietet Dir Reverse? Wenn es sich um eine Schulaufgabe mit Vorgaben handelt dann gib diese preis.

F
Falke2000 Themenstarter:in
21 Beiträge seit 2015
vor 8 Jahren

Es gibt System.Net.IPAddress.HostToNetworkOrder das alles kann.
Warum das Rad neu erfinden? Und wer verbietet Dir Reverse? Wenn es sich um eine Schulaufgabe mit Vorgaben handelt dann gib diese preis.

Auch Dir danke ich für den Tip.

Kann mir nun jemand die Sache zwecks SingleToByteArray etwas näher bringen. Gibt es nen Shortcut um sowas zu bewältigen?

gruß Charlie

771 Beiträge seit 2009
vor 8 Jahren

Kennst du schon die BitConverter-Klasse und dessen GetBytes-Methode?
Und darauf kannst du dann die IPAddress.HostToNetworkOrder-Methode aufrufen.

F
Falke2000 Themenstarter:in
21 Beiträge seit 2015
vor 8 Jahren

Ha ja kannte ich 😄

Wollte das ganze aber mal per Hand machen. Methoden callen kann ja jeder ^^

16.834 Beiträge seit 2008
vor 8 Jahren

Also ma ehrlich, was sollen solche Aussagen? Wir sind hier immer noch ein _professionelles _Forum. 🤔
Das Forum hilft Dir freiwillig bei einer schnellen Lösungssuche. Die wurde Dir nun gegeben.

Wenn Du es möglichst kompliziert oder in eigenem Code haben willst; warum suchst Du dann nicht erstmal das freie Web nach anderen Implementierungen ab oder versuchst das Prinzip dahinter zu verstehen, damit Du mehr lernst - oder Du sagst es wenigstens?
So hat das nun die Leute nur Zeit gekostet und es hat nichts gebracht. Sowas ist alles andere als fair.

Da es hier offensichtlich um keine ernst gemeinte Lösungssuche sondern eher ein "Themengeplänkel" geht, mache ich hier zu.

Thema geschlossen