Ruby 1.8에서 Ruby-FFI로 작업하여 UTF-16LE 문자열을 사용하는 라이브러리를 래핑했습니다. 라이브러리에는 이러한 String을 반환하는 C 함수가 있습니다. 내가Ruby-FFI (ruby 1.8) : UTF-16LE로 인코딩 된 문자열 읽기
attach_function [:getVersion, [], :pointer]
과 기능을 포장하고 반환 된 포인터에 read_string
전화, 또는 때문에 나는, 내가 돌아 가야하는 첫 번째 문자가
attach_function [:getVersion, [], :string]
로 포장 있는지 여부
두 번째 문자가 null (\000
)이고 결과적으로 FFI는 정상적인 단일 Null 종료 문자열을 처리한다고 가정하기 때문에 FFI는 거기에서 문자열 읽기를 중지합니다.
아마도 Ruby 프로그램이나 FFI 초기화 또는 다른 방법으로 문자열을 UTF-16LE로 인코딩해야한다고 생각합니까? 이 문제를 어떻게 해결할 수 있습니까?