VC++ 2008 SDKでプログラムを制作しています。


char *str等の文字列データを
BYTE byte[400]に変換するには
どうすればよろしいのでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2009/03/16 07:13:42
  • 終了:2009/03/23 07:15:03

回答(2件)

id:tezuboa No.1

tezuboa回答回数18ベストアンサー獲得回数22009/03/16 23:24:11

ポイント35pt

共用体(union)を使用するのが簡単だと思います。

以下にサンプルプログラム(普通のC言語ですが)を載せます。


#include <windows.h>

#include <stdio.h>

void main()

{

char *str ={"aiu"};

union{

char moji[400];

BYTE bt[400];

} u;

sprintf(u.moji,str); // strをu.strにセット

printf("%s\n",u.moji); // 文字列を参照

printf("%x %x %x %x\n",u.bt[0],u.bt[1],u.bt[2],u.bt[3]); // BYTEを参照

}


unionにより、strとbtは同じエリアを示しますので、mojiに文字列をセットし、btを参照しています。


http://q.hatena.ne.jp/

id:espresso3389 No.2

espresso3389回答回数35ベストアンサー獲得回数62009/03/18 00:51:36

ポイント35pt

最終的に何がされたいのかを明示した方が良いと思いますが、通常は、

char* str = "Hello, World!";

BYTE* p = (BYTE*)str;

でバイトのポインタになっています。配列にしたいのであれば、

BYTE byte[400];

size_t len = strlen(str);

if(len > 400) len = 400; // 文字列長が長すぎたときの処理

memcpy(byte, str, len);

のようにメモリをコピーするだけで良いはずです。

あるいは、ひょっとして、特定の文字列を特定の文字コードで表現した場合のバイナリ表現についてご質問でしょうか?

だとすれば、また、話は変わってきますが・・・。

http://dummy.example.com

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません