none
Merkwürdigkeiten beim Speichern von Integer Werten RRS feed

  • Question

  • Hallo, zum Bearbeiten einer FITS-Datei kann der Header und der Datenblock getrennt exportiert werden. Der Datenblock wird dann als txt-Datei im cvs Format angelegt. Die Daten können dann in Excel manipuliert werden. Leider gibt es kein Tool um diese Blöcke wieder zu importieren, so dass man das selbst zu Fuß machen muss. Dabei ist mir eine Merkwürdigkeit aufgefallen, dass das Speichern der Integer Werte nicht mit den Ausgangswerten kompatibel ist. In Folge einige Auszüge aus den entsprechenden Dateien.

    1. Ausgangsdatei Datenteil (die ersten 24 Werte):

    00000000000000000000000000000000 0000000F000000000000000000000000 00000000000000000000000000000000 0000000000000000000001EA00000173 0000016E0000037A0000045E000004F6 00000A93000012B20000235000003CF7

    2.csv-Datei:

    = 0 ;0 ;0 ;0 ;15 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;0 ;490 ;371 ;366 ;890 ;1118 ;1270 ;2707 ;4786 ;9040 ;15607 

    3. importierte Datei:

    00000000000000000000000000000000 0F000000000000000000000000000000 00000000000000000000000000000000 0000000000000000EA01000073010000 6E0100007A0300005E040000F6040000 930A0000B212000050230000F73C0000

    Die Darstellung der Integer Werte in der Originaldatei ist rechtsbündig, also höchstwertiges Byte ist links, in der importierten Datei ist der Integer Wert linksbündig, das höchstwertige Byte ist rechts. Wieso????

    Anbei der Code zur Übernahme der Integer Werte
            Dim daten As String
            Dim param() As String
            Dim datarray() As Integer
            daten = My.Computer.FileSystem.ReadAllText(csvname)
            daten = daten.Replace(" ", "")
            daten = daten.Replace(vbCrLf, "")
            param = daten.Split(";")
    
            ReDim datarray(param.Count)
            For i = 0 To param.Count - 1
                If param(i) = "0" Then
                    datarray(i) = 0
                Else
                    datarray(i) = Val(param(i))
                End If
            Next
    
            sr.Close()
    
            Dim ft = New IO.FileStream(fitsname, IO.FileMode.Open, IO.FileAccess.Write)
            Dim bw As New IO.BinaryWriter(ft)
            For i = 0 To param.Count - 1
                bw.Seek(hdrblk, IO.SeekOrigin.Begin)
                bw.Write(datarray(i))
                hdrblk += 4
            Next
    
            bw.close


    Gruß Richard Bartetzko
    Wednesday, September 26, 2018 3:02 PM

Answers

All replies