我需要编写一个使用mips的程序,它需要一个字符串,并将所有大写字母转换为小写字母和小写字母转换为大写字母。我的本能是用字母数值来写if语句,但我想知道是否有更好的方法来解决这个问题。
发布于 2013-10-07 03:26:30
是的,肯定有更好的方法来做到这一点!相应的大小写字母字符的ASCII值都因0x20而异。例如,'A' = 0x41和'a' = 0x61。基本上,第六位设置为小写字符,并清除为大写。
最简单的实现使用了一点抨击技巧--如果您可以识别字符是字母,则可以使用以下方法将其大写:
ch &= ~0x20;或以下列方式将其降下来:
ch |= 0x20;记住,除了字母ASCII字符之外,这不会对任何其他字符起作用。您可以检查某个字符是否与类似于(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')的字符匹配。
另一种完全避免if的方法是构建一个256个条目表,其中包含每个字符的预期输出,并为每个字符建立索引。根据处理器的不同,它的效率可能略高一些,但代价是写出来(或生成)更烦人。
https://stackoverflow.com/questions/19215874
复制相似问题