0

嗨,我有一个包含一些特殊字符和小写字母的 char16 向量,如果:

1.) 是字母吗?如果是,那么我会将其转换为小写字母,反之亦然

2.)如果它是特殊字符或空格(例如''或'"'aka apos或','或'-'等,那么我会保持原样

下面是我未完成的内核,我在将我的角色移动'n'数量之前,我想检查每个字符是否是一个字符并将其转换为大写/小写

__kernel void A2_T2_B(      
                        __global int n,
                        __global char16* char_vec,
                        __global char* encrypted,
                        __global char* decrypted        ) {



int i = get_global_id(0);



if (n>0)
{
     if(any(char_vec[i]=='z')==1))
     {

     }
     char_vec[i]+=n;

}

else if(n<0)
{
     char_vec[i]-=n;

 }

}
4

2 回答 2

1

只需添加这个简单的转换条件

for (int i = 0; arr[i] != '\n'; i++) {
    if (arr[i] <= 'a' && arr[i] >= 'z') {
        arr[i] = (int)arr[i] - 32;     // A: 65, a: 97 ;  a - A = 32
        // or   arr[i] = arr[i] - ' ';
   }
}
于 2020-05-20T21:43:11.027 回答
1

如果您要求的话,OpenCL 没有任何内置的字符串处理函数。您将需要自己实现它们,或者找到一个 3rd 方库。

我们无法给出一个通用的答案,因为实现将在很大程度上取决于编码。对于纯 ASCII,您可以使用以下内容:

bool isupper(char c)
{
    return (c >= 'a' && c <= 'z');
}
于 2020-05-20T14:23:17.503 回答