RPM Magic ヘッダーのスライスから配列への変換
RPM ファイルの処理を試みる際に、配列として表される Magic ヘッダー フィールドにアクセスしますバイト数が多いと、変換に課題が生じる可能性があります。以下のコード スニペットは、これを示しています。
type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 } lead := Lead{} lead.Magic = buffer[0:4] // Attempt to assign slice to array
スライスのみを操作する copy メソッドを使用してスライスを配列にコピーする代わりに、copy 関数をだまして配列を次のように扱うことで、この制限を回避できます。スライス:
copy(varLead.Magic[:], someSlice[0:4])
または、for ループを使用して、コピー:
for index, b := range someSlice { varLead.Magic[index] = b }
リテラルを利用する 3 番目のオプションは、以下のコードに例示されています。
package main import "fmt" func main() { someSlice := []byte{0x42, 0x45, 0x4E, 0x44} var varLead = Lead{[4]byte(someSlice)} fmt.Println(varLead.Magic) } type Lead struct { Magic [4]byte Major, Minor byte Type uint16 Arch uint16 Name string OS uint16 SigType uint16 }
これらの手法を採用することで、バイトのスライスを効率的に変換できます。配列を使用すると、RPM 解析アプリケーションでの Magic ヘッダー フィールドの操作が容易になります。
以上がRPM Magic ヘッダー処理のために Go でバイト スライスをバイト配列に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。