이동: [1024]C.char를 [1024]바이트로 변환
소개
Go에서는 C 코드와의 인터페이스에 유형 변환이 포함될 수 있습니다. 일반적인 요구 사항 중 하나는 C char 배열을 Go 바이트 배열로 변환하는 것입니다. 이 기사에서는 이를 달성하는 방법을 살펴봅니다.
변환 기술
인터페이스 변환을 시도하는 동안 발생한 오류는 직접 변환이 불가능함을 나타냅니다. 대신 다음 기술을 고려할 수 있습니다.
방법 1: 슬라이스에 복사
직접 유형 변환을 방지하려면 C 문자 배열을 슬라이스에 복사할 수 있습니다. 슬라이스로 가세요. 이는 C.GoBytes()를 사용하여 수행할 수 있습니다.
mySlice := C.GoBytes(unsafe.Pointer(&C.my_buff), C.BUFF_SIZE)
방법 2: 직접 메모리 액세스를 위해 안전하지 않은 캐스팅 사용
복사하지 않고 직접 메모리에 액세스하려면 다음을 통해 안전하지 않은 캐스팅을 사용할 수 있습니다. unsafe.Pointer.
mySlice := unsafe.Slice((*byte)(unsafe.Pointer(&C.my_buf)), C.BUFF_SIZE)
배열 유형 변환(선택 사항)
배열 유형이 필요한 경우 슬라이스를 배열로 변환할 수 있습니다.
myArray := ([C.BUFF_SIZE]byte)(mySlice)
참고: 안전하지 않은 캐스팅은 형식 안전성을 우회하므로 주의가 필요하다는 점을 기억하세요. 수표. 이 방법을 사용하기 전에 항상 잠재적인 위험을 고려하십시오.
위 내용은 C `[1024]char` 배열을 Go `[1024]byte` 배열로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!