• ベストアンサー

intの分割

暗号を解読するソフトをつくりたいのですが ある計算をして、例えばCAD6(16進数)となれば C=f A=u D=j 6=i というように暗号変換表を用いて変換します。 この変換作業までを自動で行えるようにしたいのですが C A D 6を別々の変数に入れたい場合どのようにすればいいのでしょうか? ヒントだけでもいいので教えてください。

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

  • ベストアンサー
  • R32C
  • ベストアンサー率39% (115/290)
回答No.3

ビットフィールドを使えばよいかと思います。 エンディアンには注意が必要ですが。 #include <stdio.h> int main(void) { typedef struct { unsigned int lowlow:4; unsigned int lowhigh:4; unsigned int highlow:4; unsigned int highhigh:4; } angoType; angoType *ango; int motoData; motoData = 0xcad6; ango = (angoType*)&motoData; printf("lowlow=%x lowhigh=%x highlow=%x HighHigh=%x\n", ango->lowlow,ango->lowhigh, ango->highlow,ango->highhigh); }

mofmof03
質問者

お礼

ありがとうございます。 でも何が何だかわからないですw 本を片手に少しずつ紐解いてみようと思います。 ありがとうございました。

その他の回答 (2)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.2

それじゃNo1とは別口で・・・ http://www9.plala.or.jp/sgwr-t/c/sec14.html#s14-1

mofmof03
質問者

お礼

よくわからないです・・・ まだ初心者なもので。 これからもっと勉強しようと思います ありがとうございました

  • Ceren
  • ベストアンサー率49% (90/183)
回答No.1

ビットマスクとビットシフトを使って演算すればいいのではないでしょうか?

参考URL:
http://ja.wikipedia.org/wiki/ビット演算
mofmof03
質問者

お礼

もうちょっと簡単にできませんかね? sprintfを使って文字列に変換したあと printf("%s\n",b[0]); などとしてもセグメントエラーが出てしまいます。 どうしてでしょう?

関連するQ&A