Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Wie schreibt man ein Structure mit UShort() in ein Byte()

Mitglied: Chlorbeere

Chlorbeere (Level 1) - Jetzt verbinden

14.09.2013, aktualisiert 15:09 Uhr, 1872 Aufrufe, 6 Kommentare

Hallo!
Richtig gute Plattform! Gefällt mir! Aber jetzt muss ich doch etwas fragen. Ich komme einfach nicht weiter.
Gesucht habe ich auch schon. Ich hab eauch schon allerhand ausprobiert und eine "Notlösung" habe ich auch schon. Aber ich wollte wissen, ob es nicht vielleicht eine elegantere Methode gibt.

Zu meinem Problem:
Ich habe eine *.dat, wo Informationsdaten von Satelliten drin stehen. Diese Datei ist im littleEndian gespeichert, und hat kein Alignment.

Das Struture sieht so aus:
01.
Public Structure Satelliteentry 
02.
        Dim ID As UInt32  '32bit 
03.
        Dim Unknown_1 As UInt32 '32bit 
04.
        Dim Name As UShort() '16bit unsigned 64er array 
05.
        Dim EastWest As UInt32 '0=west, 1=east, 2=undefined 
06.
        Dim Position As UInt32 'Position in 0.1 Gradschritten 
07.
End Structure
Ich habe noch ein anderes Struture wo nur! UInt32 drin ist, und kein Array von diesem Datentyp. Also kein UInt32() oder so.
Das habe ich bisher immer so erfolgreich geschrieben:
01.
Private Function Structure_To_Bytearray(ByVal Input As Object) As Byte() 
02.
 
03.
        Dim Size_Input As Integer = Marshal.SizeOf(Input) 'Größe des Outputs bestimmen 
04.
 
05.
        Dim Output(Size_Input - 1) As Byte 'Outputarray dimensionieren 
06.
        Dim Ptr As IntPtr = Marshal.AllocHGlobal(Size_Input) 'Speicherplatz für Struc umwandlung reservieren mit Pointer auf Speicherplatz 
07.
 
08.
        'Structure umwandeln 
09.
        Marshal.StructureToPtr(Input, Ptr, False) 
10.
        Marshal.Copy(Ptr, Output, 0, Marshal.SizeOf(Input)) 'Structure in Speicher kopieren 
11.
        Marshal.FreeHGlobal(Ptr) 'Zeiger wieder freigeben 
12.
        Return Output 'Array zurückgeben 
13.
 
14.
End Function
Aber das funktioniert leider nicht mit dem obigen Struct.
Ich habe es jetzt so gelöst, dass ich jeden Datentyp aus dem Struct einzeln aufrufe und ihn manuell mit einem BinaryWriter schreibe. Aber das ist irgendwie blöde, zumal ich noch ein Struct brauche was auch arrays hat und sehr viel umfangreicher ist. Dann wird das sehr unübersichtlich.

Ich habe den Verdacht, dass der mit dem anderen Datentyp UShort da nicht zurandekommt und das ganze auch noch als Array vorliegt.
Die Größe wird auch nicht richtig berechnet. Ich habe da den Verdacht, dass er nur die Größe von ID, Unknown_, EastWest und Position kriegt, aber die Größe von Name als UShort() unter den Tisch fallen lässt.

Könnt ihr mir helfen?
Würde mich tierisch freuen.

Grüße
Chlorbeere

Mitglied: aqui
14.09.2013 um 12:32 Uhr
.. ."Struture" ?? Für sowas gibts immer den "Bearbeiten" Button !!
Bitte warten ..
Mitglied: colinardo
14.09.2013 um 13:24 Uhr
Hi Chlorbeere,
da sollte Dir ein BinaryFormatter weiterhelfen:
http://www.vb-magazin.de/forums/forums/t/1411.aspx

Grüße Uwe
Bitte warten ..
Mitglied: Chlorbeere
14.09.2013, aktualisiert um 15:10 Uhr
Hi!
Jo danke für den Tipp, aber das habe ich schon probiert.
Das Problem besteht darin, dass mein Fernseher dieses *.dat File auch noch lesen muss. Und das geht nur, wenn exakt der Inhalt der jeweiligen Einträge im Struct exakt so in die Datei geschrieben werden.
Wenn ich das durch den Bin_Formatter jage, dann kommt zwar das Struct als Byte() heraus, aber leider in einem anderen "Format". Keine Ahnung wie ich das nennen soll? Oder ich habe den Binary Formatter nicht verstanden. Bzw. benutze ihn noch nicht richtig.

Mir würde es helfen, wenn ich wüsste, wie ich dem Marshal.StructureToPtr sagen könnte:
Schreibe 32 bit mit dem Inhalt von ID, dann direkt dahinter 32 bit von Unknown_1, und dann bitte 64 mal UInt16 mit dem Inhalt von Name...
Das was er macht, ist, dass er anscheinend die UInt16 als UInt32 oder so interpretiert und dass dann irgendwie als Byte() exportiert...
Bitte warten ..
Mitglied: Chlorbeere
14.09.2013 um 14:11 Uhr
Hi!
Hmm, verstehe ich nicht. Was meinst du mit "Bearbeiten"?
Bitte warten ..
Mitglied: colinardo
14.09.2013, aktualisiert um 15:08 Uhr
Hmm, verstehe ich nicht. Was meinst du mit "Bearbeiten"?
@aqui meint das du deine Rechtschreibfehler im Titel korrigierst, mit der Bearbeiten-Funktion des Beitrags.

Grüße Uwe
Bitte warten ..
Mitglied: Chlorbeere
14.09.2013 um 15:08 Uhr
Hi!
Ok. Ich hab herausgefunden, dass der nichts mit dem Typ UShort anfangen kann.
Aber wie man jetzt solche Sachen Marshallen kann übersteigt mein derzeitiges Können leider ein wenig.

Aber dennoch danke!

@aqui: Sorry hab ich nicht gesehen. Werde ich korrigieren.
Bitte warten ..
Ähnliche Inhalte
Visual Studio

VB.Net Zugriff auf Structure innerhalb eines Dictionaries

gelöst Frage von ChrFriedelVisual Studio6 Kommentare

Hallo zusammen, ich bin gerade eben über etwas gestolpert von dem ich mal einen Beispielcode verfasst habe: Zeile 14 ...

C und C++

Int to byte

gelöst Frage von Power-PolerC und C++11 Kommentare

Guten Tag, Habe gerade ein kleines Problem, welches mir Kopfzerbrechen bereitet. Und zwar will ich über den Pi an ...

Netzwerke

Nach abwesenheit kommen andere Buchstaben wenn man wieder schreibt

Frage von klaus.micheaellNetzwerke4 Kommentare

Hallo, wir haben zur Zeit ein Problem mit einer RDP Verbindung. Es entsteht nur bei einer Person, aber bei ...

Exchange Server

Get-MoveRequestStatistics nur mit Bytes

Frage von germaneseExchange Server3 Kommentare

Hallo zusammen, ich habe einen Exchange 2013 und eine Hybridstellung zu Office 365, es laufen gerade ein paar Migrationen ...

Neue Wissensbeiträge
Microsoft

Neuigkeiten zu Server und Office 365 was läuft mit was und was nicht

Tipp von AlFalcone vor 5 StundenMicrosoft

Server Betriebssysteme auf dem die verschiedenen Offices nicht supported sind: • Office 365 ist und wird nicht supported auf Windows ...

Speicherkarten

Neuer Speicherkartentyp - zunächst nur für Huawei-Smartphones (künftig auch für Notebooks u. Tablets?)

Tipp von VGem-e vor 6 StundenSpeicherkarten1 Kommentar

Servus, als ob das "Chaos" i.S. Speicherkarten noch nicht groß genug wäre?! Evtl. kommt dieser neue Kartentyp bald auch ...

Sicherheit

Diverse D-Link-Router durch drei Schwachstellen kompromittierbar

Information von kgborn vor 8 StundenSicherheit

Hat jemand D-Link-Router in Verwendung? Einige Modelle sind sicherheitstechnisch offen wie ein Scheunentor. Äußerst unschöne Sache, aber nichts neues ...

Hardware

100.000 Mikrotik-Router ungefragt von Hacker abgesichert

Information von 7Gizmo7 vor 22 StundenHardware1 Kommentar

Hallo zusammen, da hier ja öfters mal von Mikrotik gesprochen wird. Trotz Updates klafft eine Sicherheitslücke in Hundertausenden Mikrotik-Routern. ...

Heiß diskutierte Inhalte
Windows 10
Sysprep Fehler im Log kann nicht starten
Frage von grillinator95Windows 1022 Kommentare

Hallo, kann leider SYSPREP nicht mehr starten, Win10 64bit. Logfile sagt folgendes: 2018-10-17 13:44:56, Info SYSPRP 2018-10-17 13:44:56, Info ...

Apple
MacBook Pro 2018 mit 8 GB oder 16 GB
Frage von SysAdm81Apple14 Kommentare

Hallo zusammen, ich steh vor der Überlegung mir ein MacBook Pro 13 (2018) zu kaufen. Bzgl. SSD habe ich ...

Outlook & Mail
Outlook schiebt Mails aus Posteingang sofort in den Papierkorb
Frage von hermesOutlook & Mail13 Kommentare

Hallo Outlook Fachleute, wir haben hier das Problem, dass Outlook 2010 alle ankommenden Mails seit zwei Tagen einfach in ...

Sicherheitsgrundlagen
EuGH-Urteil - Internetanschluss für die ganze Familie - Filesharer haften trotzdem
Frage von StefanKittelSicherheitsgrundlagen12 Kommentare

Hallo, In diesem Artikel geht es darum, dass Jemand aus der Familie ein Hörbuch illegal hochgeladen hat. Der Vater ...