• ベストアンサー

DWORDとcharの変換

突然ですが、DWORD*がたの文字列をchar*がたの文字列に変換する方法ってありますか? あれば関数名など教えていただけると助かります。 いそいでいます。お願いしますm(_ _)m

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

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

どんな風に変換するかによると思うけど・・・・。 メモリ上の話で言えば、例えばWindows(32bit)だと、DWORDは32bit(4byte)、charは8bit(1byte)になるよね。 なので、リトルエンディアンだと、泥臭い処理をするなら以下のようになる。 -------- DWORD* pdw; char* pc; // ここで pdwが確かな場所を指すようにする。 *pc++ = (char)(*pwd & 0xff); *pc++ = (char)(*pwd >> 8 & 0xff); *pc++ = (char)(*pwd >> 16 & 0xff); *pc++ = (char)(*pwd++ >> 24 & 0xff); -------- 後はこれを変換したい分だけループしてあげれば、一応目的は果たせそうだけど・・・・? charはunsigned charかBYTEの方が良いかも知れない。

genki140
質問者

お礼

できました!! 分かりやすい回答どうもありがとうございましたm(_ _)m

その他の回答 (2)

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

> DWORD*がたの文字列をchar*がたの文字列に変換する方法ってありますか? 「DWORD*がたの文字列」とは何でしょうか? 文字列は通常charまたはwchar_tの配列です。DWORD*がたの文字列が、どんな表現方法になっているのか分からないと、どうすることもできません。

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

多分DWORD(=unsigned long) の値が50なら char[] の"50"とかにしたいのだと思いますが DWORD dw = 50; char buf[8]; sprintf( buf , "%u" , dw);

関連するQ&A

  • char型変数をLPCTSTR型に変換したい

    大学の研究でプログラム作成している者です. 現在外部ファイルの文字列をfscanf()でchar型変数に取り込み,それをLPCTSTR型変数に変換して,関数に引数として渡そうとしてます. しかし,現在はchar/THCARの変換が正しくできず困っております.現在のコードは以下のような流れになってます. ----------------------------------------------- char name[MAX_PATH]; TCHAR name_t[MAX_PATH]; fscanf( &fp, "%s", name ); wsprintf( name_t, _T("%s"), &name ); // char ⇒ TCHAR makedFunction( name_t ); // 自作関数(引数はLPCTSTR) ----------------------------------------------- しかし, wsprintf()で変換した時点で,文字列がおかしくなってしまい困ってます. 開発環境はVisualStudio2010で,MFC作成(Unicode文字列)となってます.ちなみにマルチバイト文字列を使用する解決方法はなしとします. 解決方法をご存知の方がおられましたら,是非とも,ご回答よろしくお願い致します.

  • System::String->char*変換でき

    C++/CLIでSystem::String^文字列をchar*に変換する関数を書いたのですが、256文字以上の文字列を投げて、戻値を確認してみると、255文字分しか中身が詰まっていません。元の文字列はアスキーのみです。 #include <msclr/marshal.h> using namespace msclr::interop; static char* toPtChar(const String^ Text) { String^ temp = (String^)Text; msclr::interop::marshal_context^ context = gcnew msclr::interop::marshal_context(); char* res = ((char*)(context->marshal_as<const char*>(temp))); return res; } この関数をどのように変更すれば、256文字以上変換できるでしょうか?

  • char[]をDWORDに格納するには

    お世話になります。 今、VC++でMFCプログラミングをしています。 char Data[256]に格納した文字列を SetAddress()の引数として渡したいのですが、どうしたらよいでしょうか? どうぞよろしくお願い致します。

  • unsigned char SJis[2]からstd::stringに変換

    開発環境は VC++ 2008 Express Edition あるDLLの関数で戻り値としてShiftJISの1文字が格納された unsigned char SJis[2] が返され,これを呼び出し側のプログラムで使っている文字列 std::string str に順に追加していこうと思っています. そこで, unsigned char tmpSJis[3]; tmpSJis[0] = SJis[0]; tmpSJis[1] = SJis[1]; tmpSJis[2] = '\0'; str += std::string(tmpCode); というコードを書いてループさせたのですが, error C2440: '<function-style-cast>' : 'unsigned char *' から 'std::string' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか?

  • intをcharに変換

    例えば,int型の数値をchar[]に変換したいと思っています. Windowsではstdlib.hをインクルードすると itoa()という関数が使えますが, Linuxでは使えず,itoaと同等のものを自分で作る必要があるようです. intは常に-10~-99の間なのでこんな風に書いてみたんですが, 出力してみると文字化けしててダメでした. void itoa2(int i,char *str){ str[0] = ' '; str[1] = '-'; str[2] = (-1*i)/10; str[3] = (-1*i)%10; } よい方法をご存知の方いらっしゃいませんでしょうか. Red Hat Enterprise Linux Client release 5.3 (Tikanga) gcc バージョン 4.1.2 20080704 (Red Hat 4.1.2-44) を使っています.

  • char型からアスキーコードへの変換

    Javaでchar型配列に入っている文字をアスキーコードに変換する方法をご教授ください。

    • ベストアンサー
    • Java
  • VC++20051を最近はじめました

    最近プログラミングをはじめたのですがcharで関数を定義し戻り値に文字列を返したいのですがchar[20]をchar二変換できないとでます。関数はcharで宣言しているのでそのとおりだと思うんですが文字列を返すときはなにか特別な方法があるのですか?

  • 2進数から10進数変換

    int henkan(char [ ]) という関数に、”10111”と 2進数で表記されている文字列を数値に変換したいんですが、 どうやったらよいのか教えてください。

  • c言語 int型の数字をchar型の配列に

    c言語についてです。 int型の数字をchar型の配列に入れたいです。 関数に対してint型の数字を文字列として渡し、 関数内でchar型の配列に格納したいです。 例として、 a(char a[]){  ~~  ~~ } int main(void){ int x = 5678;  ~~  a(x); } とできるようにしたいです。 しかしこれだと5678という値がそのままchar型の一つの配列に入る?ため正しくないです。 欲しい結果としてはちゃんとa関数内で、 a[1] = '5' a[2] = '6' a[3] = '7' a[4] = '8' となってほしいです。 もともと渡す値が”5678”となっていれば結果は正しく出るのですが、 渡す値がint型と決まっているためどうにかして5678を”5678”とすればいいのではないかと考えています。 つまり5678を単純に文字列に変換すればいいのでしょうか? またプログラム内ではsprintfやatolを使用しないで実現させたいです。 難しいかもしれませんがお願いします。 なんだか説明が下手ですみません。 お願いいたします。

  • C言語:小文字を大文字に変換する関数を作成

    C言語超初心者です。学校の課題で次のような問題が出されました。 ・問題・ 次に挙げる縛りに沿い、以下の関数とメイン関数を作り、処理結果を画面に作成しなさい。 char *tst(char *str) ・strの中の文字列も小文字を大文字に変換し、変換した文字列が格納されているchar *に返す。 ・引数strの中の文字列は受け取った状態で手を加えない。 ・関数内でmalloc関数を使用し、領域を確保して大文字に変換した文字列を格納しreturnでポインタを返す。 ・malloc関数を使用する。 ---------------------------------------------------------------------------------- 大文字に変換するには while(*str != '\0') { if(*str >= 'a' && *str <= 'z') { *str -= 'a'- 'A'; } ++str; } というのは分かったのですがここから何をすするか全く分かりません。初心者なのでなるべく分かりやすく教えてもらえると有難いです。 お願いします。

専門家に質問してみよう