gpt4 book ai didi

c - 在不使用循环的情况下将char *转换为C中的大写

转载 作者:行者123 更新时间:2023-11-30 21:47:15 27 4
gpt4 key购买 nike

是否可以将char *转换为大写而无需在循环中逐字符遍历?

假设:
1. Char指针指向固定大小的字符串数组。
2.指向的数组仅包含小写字符

最佳答案

在ASCII编码中,将小写转换为大写等于将权重位设置为32(即20H,space字符)。

使用按位运算符

Char|= 0x20;


您可以通过在数组上映射更长的数据类型来一次处理多个字符。例如,要转换一个11个字符的数组,

int ToUpper= 0x20202020;

*(int*) &Char[0]|= ToUpper;
*(int*) &Char[4]|= ToUpper;
*(short*)&Char[8]|= ToUpper;
Char[10]|= ToUpper;


您可以使用SIMD内部函数(SSE,AVX)转换为64位整数甚至更大(一次最多512位= 64个字符)。

如果您的代码允许,则最好将缓冲区长度扩展到下一个更大的数据类型,以便可以在单个操作中更新所有字节。但是不要忘记恢复终止的null。

关于c - 在不使用循环的情况下将char *转换为C中的大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48920908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com