Ich habe die folgenden zwei Strukturengolang - Bestücken Array of Structure
type AAAA struct{
Aa [2]byte
Ab [2]byte
Ac [3]byte
}
type BBBB struct{
Ba [4]byte
Bb [2]byte
Bc [3]byte
Bd [2]byte // No Of Struct AAA Items
BBStr []AAAA
}
So Struct BBB ist in Struct AAA Wiederholung
Dann habe ich eine Zeichenfolge, die ich als Eingabe haben, die den Wert der enthält Struktur als Eingabe
Eingang kommen: = "aaaabbccc02ddeefffddeefff" (hier 02 ist in Struct BBBB keine Zeit wiederholt Struct AAAA)
ich muss durch den Eingang lesen st Ring und bevölkern die Struktur BBBB einschließlich der Anordnung der Struktur AAA
Ich schrieb die Funktion unten, um dies zu erreichen. Aber ich bin immer "Bad Fehler - binary.Read: ungültiger Typ * main.BBBB
bei der Identifizierung, warum dieser Fehler Sie brauchen Hilfe Auch ist es eine Möglichkeit, dies zu tun anders
func main() {
input := "aaaabbccc02ddeefffddeefff"
var k BBBB
var j AAAA
k.BBStr = append(k.BBStr,j)
k.BBStr = append(k.BBStr,j)
xyz := []byte(input)
err := binary.Read(bytes.NewReader(xyz), binary.LittleEndian, &k)
if err != nil {
fmt.Println("Bad error - ",err)
}
fmt.Println("Structure Definition - ",k)
}
Das Binärpaket kann nur automatisch in Werte fester Größe decodiert werden. Es kann nicht wissen, dass das 'Bd'-Feld ein uint16 (?) Ist, das anzeigt, wie viele AAAAs folgen. Sie müssen etwas tun, wenn die Decodierung manuell erfolgt. – JimB
ok Ich dachte, wenn ich die AAAA in BBBB die richtige Anzahl von Malen sollte es in der Lage sein, die vollständige Byte-Zeichenfolge zu lesen. Danke für Ihre Hilfe, obwohl @JimB – MKS