Rumah >pembangunan bahagian belakang >Golang >Unmarshaling asn gagal
editor php Xigua di sini untuk berkongsi dengan anda soalan tentang "unmarshalling asn failed". Dalam komunikasi rangkaian, ASN (Nombor Sistem Autonomi) ialah nombor yang digunakan untuk mengenal pasti sistem autonomi Walau bagaimanapun, kadangkala penyahkumpulan gagal apabila menyahkumpulan ASN. Ini mungkin disebabkan oleh format pengekodan ASN yang salah, paket ASN yang rosak atau parser yang tidak serasi. Dalam artikel ini, kita akan membincangkan sebab dan penyelesaian kegagalan unmarshalling ASN untuk membantu semua orang lebih memahami dan menyelesaikan masalah ini.
package main import ( "encoding/asn1" "fmt" ) type SimpleStruct struct { Value int } func main() { berBytes := []byte{0x02, 0x01, 0x05} var simpleStruct SimpleStruct _, err := asn1.Unmarshal(berBytes, &simpleStruct) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Decoded value: %d\n", simpleStruct.Value) }
Saya cuba unmarshal tetapi mendapat ralat berikut:
<code> Error: asn1: structure error: tags don't match (16 vs {class:0 tag:2 length:1 isCompound:false}) {optional:false explicit:false application:false private:false defaultValue: tag: stringType:0 timeType:0 set:false omitEmpty:false} SimpleStruct @2 </code>
Ada sesiapa boleh tolong? Terima kasih
0x020105
mengekodkan integer 5 (lihat https://www.php.cn/link/8ae7733f9bc11275e8d0a0fdabe5be0a ), jadi ia hendaklah dinyahmarshaled dengan integer
package main import ( "encoding/asn1" "fmt" ) func main() { berBytes := []byte{0x02, 0x01, 0x05} var v int _, err := asn1.Unmarshal(berBytes, &v) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Decoded value: %d\n", v) // Output: // Decoded value: 5 }
dan SimpleStruct{Value: 5}
被编组为 0x3003020105
:
package main import ( "encoding/asn1" "fmt" ) type SimpleStruct struct { Value int } func main() { simpleStruct := SimpleStruct{Value: 5} buf, err := asn1.Marshal(simpleStruct) if err != nil { fmt.Println("Error:", err) return } fmt.Printf("Encoded value: 0x%x\n", buf) // Output: // Encoded value: 0x3003020105 }
Atas ialah kandungan terperinci Unmarshaling asn gagal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!