char 배열을 double로 변환하는 함수를 만들고 싶습니다. 커널 내에서이 함수를 호출하고 char 배열에 대한 포인터를 전달합니다. 그러나 문제가있는 것 같습니다. 나는이 1 오류 준다 더블char 배열을 opencl에서 double로 변환하는 방법은 무엇입니까?
double toDouble(uchar* ptr)
{
double value;
value = *ptr << 56;
value |= *(ptr+1) << 48;
value |= *(ptr+2) << 40;
value |= *(ptr+3) << 32;
value |= *(ptr+4) << 24;
value |= *(ptr+5) << 16;
value |= *(ptr+6) << 8;
value |= *(ptr+7);
return value;
}
와 비트 연산을 사용할 수 없습니다
이것은 또한 나에게 경고 "카운트> 이동을 준다"이진 표현에 유효하지 않은 피연산자 ('더블'과 '더블') " = 유형의 너비 ".
int 또는 long (같은 기능을 toInt로 만들고 비트 연산 사용)으로 동일한 작업을 수행 할 때 오류가 발생하지 않습니다. 이것은 uchar 배열을 double로 변환하는 정확한 방법입니까?
나는이
double data;
uchar* dataptr=&data;
for(int i=0;i<8;i++)
dataptr[i]=ptr[i]; //where ptr is the pointer to the uchar array
을 시도하지만이
이
두 번째 오류가 발생하면 포인터를 유형 변환해야합니다. 여기에 관련있는 내용이 있습니다. http : // stackoverflow .com/questions/10483445/how-to-type-cast-char-int-in-opencl – brokenfoot