在opencl中键入转换

时间:2013-05-04 10:19:50

标签: type-conversion opencl

我想转换' unsigned char' ' uchar16&#39 ;.首先,我直接转换它,但它运行错误。

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中搜索过,但我找不到答案。

2 个答案:

答案 0 :(得分:1)

你得到的错误是什么?

在这种情况下,调用 vload16 更简单,效率更高:

uchar16 u = vload16(0,ciphertext);

答案 1 :(得分:1)

对于OpenCL中的矢量转换,有一套函数:

convert_destType(sourceType)

见标准第6.2.3节(v1.2)。所以在你的情况下,它将是:

uchar16 out = convert_uchar16(ciphertext);