2013-10-15 2 views
2

uint8_t의 이진 이미지를받는 Firefox 확장 프로그램에서 작업하고 있습니다.js-ctypes from javascript objects

내 확장 프로그램에서받은 이미지에 사용해야하는 기능을 가진 .dll 파일을로드합니다. 이 함수는 ctype.uint8_t.ptr 매개 변수를 사용하고 ctype.uint8_t.ptr 값을 반환합니다.

ArrayBuffer을이 특정 ctype으로 변환하는 방법을 찾을 수 없어서 함수에 전달할 수 없습니다. 이 작업을 수행하는 올바른 방법이 있습니까?

ImplicitConvert()를 사용하면 오류가 발생합니다. 인수는 음수가 아닌 정수이어야합니다.

+0

굉장한 질문입니다! 최근에 jsctypes 작업을 아직도하고 있습니까? 오픈 소스 어딘가에 있나요? :) – Noitidart

답변

2

당신은 할 수 있어야한다 :

var a = new Uint8Array(1<<10); 
var ptr = new ctypes.uint8_t.ptr(a.buffer); 

물건이 보인다 문서화되어 있지 않습니다, 그러나 이것은을 보여 some tests이있다.

+1

일할 수도 있지만 다음 오류가 발생합니다. TypeError : 예상 된 형식 포인터, (void 0) –

+1

나는 어떻게 든 a.buffer 잘못된 데이터가 끝날 것으로 가정합니다. 이것을 치료할 방법이 있습니까? 작성한 새로운 Uint8Array의 길이 속성에 따라 길이는 19입니다. –

+1

작동합니다. 답변 주셔서 감사합니다. 그러나 배열을 가리 키기 전에 배열을 검사하는 방법에 대해서는 여전히 궁금합니다. try와 catch 블록을 사용할 수 있지만 미리 알고있는 것이 더 효과적 일 수 있습니다. –