RPM 매직 헤더를 슬라이스에서 어레이로 변환
RPM 파일 처리를 시도하는 중 배열로 표시되는 매직 헤더 필드에 액세스 바이트 수로 인해 변환 문제가 발생할 수 있습니다. 아래 코드 조각은 이를 보여줍니다.
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(varLead.Magic[:], someSlice[0:4])
또는 for 루프를 사용하여 다음을 수행할 수 있습니다. 복사:
for index, b := range someSlice { varLead.Magic[index] = b }
리터럴을 활용하는 세 번째 옵션은 아래 코드에 예시되어 있습니다.
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 매직 헤더 처리를 위해 Go에서 바이트 슬라이스를 바이트 배열로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!