• ベストアンサー

大文字⇔小文字の変換

大文字⇔小文字の変換をしたいのですが、tolowerやtoupperを使わずにしたいのです。 「a」は16進数で61 「A」は16進数で41 なので20を引けば変換できると思うのですが、可能でしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

文字コードとして ASCII を使っていることがわかっていれば, 0x20 を足したり引いたりすることで変換できます. ポータブルじゃないことを認識していれば OK なんですけど, 正直 tolower や toupper を使うべきだと思います.

その他の回答 (1)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> tolowerやtoupperを使わずにしたいのです。 なぜでしょうか? 単にtolowerやtoupperを使わないというだけであれば、towlowerやtowupperを使うという手もありますし、towctransを使ってもよいでしょう。 "C"ロケールかつASCIIであれば、isupper(c) ? (c - 'A' + 'a') : c のようなやり方もありですが、これでは移植性がありませんし、ロケールにも対応できません。

関連するQ&A