ベストアンサー WORDをcharに変換する方法 2002/04/29 20:11 MFCデータ型のWORD(C言語のunsigned(signed)short)の値を)char型に変換する方法をご存知の方がいらっしゃったらお願いします。 みんなの回答 (3) 専門家の回答 質問者が選んだベストアンサー ベストアンサー alfeim ベストアンサー率58% (114/195) 2002/04/30 01:09 回答No.3 それってC標準関数のitoa()じゃ、なにか不味いんでしょうか? #include <stdlib.h> ... WORD wNumeric = 123; char pszConvertNumeric[256]; itoa(wNumeric, pszConvertNumeric, 6); ってな感じでいけると思いますけど・・・ この方法で不味いのであれば補足してください。 itoa()に関してはMSDN libraryを参照してください。 質問者 お礼 2002/04/30 09:29 お答えをいただいた皆さんありがとうございます。 itoa()かぁ。atoi()は知ってたけど、C標準関数知らないでVC使うのきついかも、しかも業務で・・・。 C言語勉強しなおします。 これからもよろしくお願いします。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 その他の回答 (2) itohh ベストアンサー率45% (210/459) 2002/04/30 01:07 回答No.2 こんにちは。itohhといいます。 簡単なところでは。 WORD b=123; char c[10]; sprintf(c,"%d", b ); では、いけませんか? 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 jppy ベストアンサー率14% (14/99) 2002/04/29 20:18 回答No.1 (char)でキャストすれば良いのでは?そうじゃないのかな? 質問者 補足 2002/04/29 21:44 補足です。すみません。 例えば WORD word=123をchar型の文字列"123"に変換し、 char* charにstrcpy()で値をコピーするという処理を現在 思案中です。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発C・C++・C# 関連するQ&A char→10進数 PICのプラグラムをC言語で書いています。 unsigned charでxを宣言して、xには電圧をAD変換した値(8bit)が代入されます。このxの値を10進数に変換したいのですが、char型をどうすればint型に変換すればいいのか分かりません。 自分なりに作ってみましたが、うまく動作しません。ご教授よろしくお願いします。 /*抜粋*/ unsigned char x; int y,i; float n; ・・・ y=0; for(i=7;i>=0;i--){ n=(((x>>i)<<7)>>7); if(n==1)n=pow(2,i); y=y+(int)n; } 暗黙的型変換 C の文法書を読んでいると、 汎整数型拡張: int より小さな汎整数型が式中に現れる場合は、暗黙的に int 型に変換される。 算術変換: 二項演算子で二つのオペランドの型が違う場合は、演算前により大きな方の型に暗黙的に変換される。 とあります。 例えば int 型 = unsigned short 型 - unsigned char 型; はどのように暗黙的な型変換が行われるのでしょう。 int 型 = (int)unsigned short 型 - (int)unsigned char 型; でしょうか。あるいは、 int 型 = (int) ( unsigned short 型 - (unsigned short)unsigned char 型); でしょうか。 VC++2010 MFC 符号付きchar型変換 VC++2010 MFCで今アプリケーションを作成していて、質問がございます。 例 char c_buff; unsigned char uc_buff; 上記のように変数を宣言し、 c_buffには0xFD;が入ってます。 その値を uc_buffに代入したいのですがどのように行ったら代入できるか よろしくお願いします。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム バイナリの文字列を変換したい... Jpeg のExifを解析するスクリプトを書いてます あるバイナリの文字列を下記の形式に 変換する手段をどなたかご存知ないですか? (そもその下記の意味さえわからないですが) unsigned byte ascii strings unsigned short unsigned long unsigned rational signed byte signed short signed long signed rational single float double float よろしくお願い致します int型をchar[]に変換する方法 int型をchar[]に変換する方法 C++で、たとえば int i = 234; を宣言します。それを char c[4] = {'2','3','4','\0'}; に変換する方法があれば教えてください MicroC コンパイラ 変数宣言 MicroC コンパイラ 変数宣言について質問です BYTE tmp1; WORD tmp2; なる定義があったとして 変数型範囲はどの範囲になるのでしょう 下記の定義は見つかったのですが 上記は分かりません 変数型 バイト数 範囲 (unsigned) char 1 0 .. 255 signed char 1 - 128 .. 127 (signed) short (int) 1 - 128 .. 127 unsigned short (int) 1 0 .. 255 (signed) int 2 -32768 .. 32767 unsigned (int) 2 0 .. 65535 (signed) long (int) 4 -2147483648 .. 2147483647 unsigned long (int) 4 0 .. 4294967295 float 4 ±1.17549435082 * 10-38 .. ±6.80564774407 * 1038 double 4 ±1.17549435082 * 10-38 .. ±6.80564774407 * 1038 long double 4 ±1.17549435082 * 10-38 .. ±6.80564774407 * 1038 charの操作について お世話になります、フジと申します。 今回皆様にお聞きしたいことはchar型変数の操作についてなのですが、次のプログラムのようにchar型に代入した整数を16進数用に変換させ、最後に同じchar型の変数に代入したいと考えています。 int a,b,c; char data = 48; //dataに10進数48を代入 c = (int)data; //ここでcは48になる a = c/16; //16進数用に変換 b = c%16; c = 10*a + b; //ここでcは30になる このint型変数c(30)をchar型変数dataに代入するにはどうしたらいいでしょうか? char buf[5]; sprintf(buf,"%d",c); にすればchar型の配列に代入することは出来ますが、これだとcの値30がbuf[0]=3,buf[1]=0となってしまい、目的の操作が達成できません。 よい方法をしっている方がいましたら、宜しくお願い致します。 C言語の型変換について short int 型をunsigned char型に変換する方法をおしえてください C言語でunsigned char配列を連結する方法ってありますか? C言語でunsigned char配列を連結する方法ってありますか? 例えば unsigned char test[]={0x00,0x02,0x03}; unsigned char test2[]={0x05,0x06}; という配列があったとして test[]という配列のあとにtest2の配列を追加することは可能でしょうか? {0x00,0x02,0x03,0x05,0x06}という配列になればOKです。 よろしくお願いします。 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' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか? charからLPTSTRへの変換方法 リストコントロールにchar型の変数の値を数値として表示させたいのですが、charからLPTSTRへの洗練された変換方法がよくわからないです。 char tempChar; CString tempString; tempString.Format("%s", tempChar); LPTSTR lpsz = new TCHAR[tempString.GetLength()+1]; _tcscpy(lpsz, tempString); こんなプログラムを考えてみたのですが、汚いような気がします。もっと簡単で洗練された変換方法はないのでしょうか? char型からint型への変換 char型からint型への変換 char a[6]=3+2-5; int e[6]; (全て0で初期化済) for(i=0;i<6;i++){ if(c[i]=='0'||c[i]=='1'||c[i]=='2'||c[i]=='3'||c[i]=='4'||c[i]=='5'){ e[i]=((int)c[i]-'0'); printf("%d",e[i]); }} for(i=0;i<NUM_DATA;i++){ printf("%d",e[i]); } このプログラムでは上のe[]の出力では「325」と出力されますが、 下のe[]の出力ではめちゃくちゃな数字が出力されてしまいます。 きちんと数字だけを抽出しint型に変換するにはどうしたらいいでしょうか? C言語で行っています。よろしくお願いします。 AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム char型・int型を相互変換させるプログラミング 今、C++で2つのPC間で数値データの送受信を出来るようにしようと思い、実際にデータを飛ばせるところまで来たのですが、送れるデータの型はchar型のみであるとのこと。 ですので、intの値を一旦charにして送り、送った先でまたintにしたらいいかなと考えてプログラミングしました。 簡単にできると思ったのですが、上手くいきません・・・。プログラムのどの部分が間違っているのでしょうか? 一人では、これ以上悩んでも好転しないので、皆さんのご指導をお願いします 以下プログラム抜粋、このプログラムでは型変換がおこなわれているかの確認ができればいいので、それのみでプログラミングしています =================================================== #include <stdio.h> #include <stdlib.h> #include <string> #include <iostream> int main() { int a=123; char *b=new char; int c=1; //変換部分 *b=(char)a; std::cout<<"int→char>>>"<< c << "\n"; //逆変換部分 d=atoi(c); std::cout<<"char→int>>>"<< d << "\n"; } ====================================================== C言語で、テキストファイルに下記の構造体データのバッファを保存し、 C言語で、テキストファイルに下記の構造体データのバッファを保存し、 PHPで構造体データの中身を取ることは可能でしょうか。 struct ParamData{ signed short paramA; signed short paramB; signed short paramC; signed short paramD; signed short paramE; signed short paramF; signed short paramG; }; C言語では、 ParamData* params = (ParamData*)readData; で取得できたのですが・・・。 宜しくお願いします。 char型と言うものがまだ理解出来ません。 まだC++を初めて間もないものですが、char型が今一理解出来ずに困っております。何方か詳しく教えて下さい。 たとえば、 unsigned char c[3] = {'A', 'B', 'C'}; unsigned char chr; chr = c[1]; とした時に、chrは204 'フ'と言うような答えとなってしまいます。素人目から見ると65 'A' と言うような答えしか予想がつきません。とにかくどういうものなのかがよく理解出来ず、参考書をみても0~255(符号無,英数字1文字),-128~127(符号有,英数字1文字)と書いてり、どのような使い方をするのかの詳細がなく困っております。詳しくご説明頂ける方よろしくお願い致します。 私は現在、職業訓練校にて勉強し始めた初心者です。 私は現在、職業訓練校にて勉強し始めた初心者です。 C言語の ”char型”の使い分けが解からなく困っております。 本では char型 0~255 又は -127~127 signed char型 -127~127 unsigned char型 0~255 となっており、具体的には”char型”はどう使い分けるのか解かりません。 又、符号付と符号無し以外に存在する意味が解かりません。 どうぞ宜しく御願い致します。 unsigned char の配列で途中で0を含む時のstrlen 表題のようにunsigned char a[10]; の配列で、文字列ではなくデータとして扱っている時、どうしても途中で0が混じります。そこでstrlen(a) を取ると途中までの長さの値しか取れません。 sizeof(a) としてもunsigned char のsize=4 になるだけです。 この回避策はあるでしょうか。 型変換 こんにちは。 long型およびunsigned long型を unsigned char型へ変換する方法を教えてください。 例えば、long型をchar型へ変換するには sprintf(pchar, "%s", &longvalue); で可能だと思いますが、冒頭の変換は sprintfだと1番目の引数の型が違うようで うまくいきません。 よろしくお願いします。 double型の値をchar配列に変換する方法はありますか? double型の値をchar配列に変換する方法はありますか? 例えばdoubleの1.0をcharの配列に{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x3F}のように string から unsigned char へ unsigned char* uchar_string(string* str) { int length = str->length(); const char* cchar = str->c_str(); unsigned char* uchar = new unsigned char[length+1]; for(int i=0; i=length; i++) { uchar[i] = (unsigned char)cchar[i]; } return uchar; } int main() { string str; cin >> str; unsigned char* uc; uc = uchar_string(&str); cout << uc; delete uctest; return 0; } このようにしたところ、cout << uc; が出力されず入力待ちとなり正常に動きませんでした。 原因がわからないです。原因と解決方法のご教授願います。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター プログラミング・開発 Microsoft ASPC・C++・C#CGIJavaJavaScriptPerlPHPVisual BasicHTMLXMLCSSFlashAJAXRubySwiftPythonパフォーマンス・チューニングオープンソース開発SEOスマートフォンアプリ開発その他(プログラミング・開発) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など
お礼
お答えをいただいた皆さんありがとうございます。 itoa()かぁ。atoi()は知ってたけど、C標準関数知らないでVC使うのきついかも、しかも業務で・・・。 C言語勉強しなおします。 これからもよろしくお願いします。