• ベストアンサー

文字列をint型にキャスト

文字列をunsigned int型キャストし,それをある演算をして 正の整数に変換したいのですがどうすればいいですか? int ca(char *s) { unsigned int h; int key; h = (unsigned int)s; //文字列を演算し 0~254 の整数にする// key = h % 254; return key; } int main() { char moji[32]; moji = "moji"; unsigned int c; c = ca(moji); }

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

  • ベストアンサー
  • f_attck
  • ベストアンサー率33% (40/118)
回答No.2

#1の方が言われているようになにがしたいのかが良くわかりません。 結果どうなることを期待しているのか書いてみてはどうでしょう? 以下、勝手に推測 char型をint型にキャストする場合は、エンディアンを よく考えてください。 char型の場合は、メモリに以下のように読まれます。 ↓char変数のアドレス。 moji つまり、先頭アドレスの場所を見ると0x6Dになりますよね? int型の場合には ↓int変数のアドレス。 ↓読み込み開始位置 moji int型の場合は、4バイト(OS依存)変数ですので、後ろから見ます。 つまり0x696A6F6Dと見えるはずです。 ですので、int型変数に文字列を入れてchar型の時と同様に 見えるようにするためにはエンディアン変換をしてください。 (順番を入れ替えてからint型に代入してください。) 254の余りを戻している部分に関しては、期待している動作が わかりません。

その他の回答 (2)

  • WizTaka
  • ベストアンサー率53% (7/13)
回答No.3

文字列を int に変換したいなら、atoi という関数を使うと簡単にできます。 //----------------------------------------------------------- #include <iostream> using namespace std; int main() {   char test[] = "123";   int value = atoi(test);   cout << value << endl;   return 0; } //----------------------------------------------------------- これ以外にも、istringstream を使ってもできます。 //----------------------------------------------------------- #include <iostream> #include <sstream> using namespace std; int main() {   string strTest = "123";   istringstream iss(strTest);   int value;   iss >> value;   cout << value << endl;   return 0; } //----------------------------------------------------------- ここまでできれば、正の整数に変換することもできるでしょう。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

なにをしたいのかまったく不明です。 >//文字列を演算し 0~254 の整数にする// >key = h % 254; 0 ~ 254 の整数が欲しければ 255 で割って下さい。 >char moji[32]; >moji = "moji"; 恐らく、moji 配列に 'm', 'o', 'j', 'i' を格納したいのでしょうけど、 C 言語でこのような書き方はできません。「文字列」とは何かから学習して下さい。

関連するQ&A

専門家に質問してみよう