2013-05-04 4 views
0

Я хочу преобразовать 'unsigned char' 'uchar16'. Сначала я Direct конвертирую его, но он запускает ошибку.Преобразование типа в opencl

uchar16* out; 
unsigned char ciphertext[16]; 
/* 
* 
*/ 
out[0] = (uchar16)(ciphertext[0], ciphertext[1], ciphertext[2], ciphertext[3], 
     ciphertext[4], ciphertext[5], ciphertext[6], ciphertext[7], 
     ciphertext[8], ciphertext[9], ciphertext[10], ciphertext[11], 
     ciphertext[12], ciphertext[13], ciphertext[14], ciphertext[15]); 

Когда я использую действительное значение вместо переменной, оно выполняется.

out[0] = (uchar16)(0x2B, 0x7E, 0x15, 0x16, 
    0x28, 0xAE, 0xD2, 0xA6, 
    0xAB, 0xF7, 0x15, 0x88, 
    0x09, 0xCF, 0x4F, 0x3C); 

Я искал в Google и Stackoverflow, и я не нашел ответа.

+1

Вы не выделяете какую-либо память для «выхода». Попробуйте "uchar16 out [1];" вместо. –

ответ

1

Для векторного преобразования в OpenCL есть набор функций:

convert_destType(sourceType) 

См пункт 6.2. 3 стандарта (v1.2). Поэтому в вашем случае это будет:

uchar16 out = convert_uchar16(ciphertext); 
1

Какая ошибка вы получаете?

Это проще и в целом более эффективным для вызова vload16 в этом случае:

uchar16 u = vload16(0,ciphertext);