我想转换' 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中搜索过,但我找不到答案。
答案 0 :(得分:1)
你得到的错误是什么?
在这种情况下,调用 vload16 更简单,效率更高:
uchar16 u = vload16(0,ciphertext);
答案 1 :(得分:1)
对于OpenCL中的矢量转换,有一套函数:
convert_destType(sourceType)
见标准第6.2.3节(v1.2)。所以在你的情况下,它将是:
uchar16 out = convert_uchar16(ciphertext);