C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 文字列の様々な変換について


(過去ログ 91 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■54576 / inTopicNo.1)  文字列の様々な変換について
  
□投稿者/ 新参者 (3回)-(2010/10/26(Tue) 20:55:50)

分類:[C/C++] 

大変初歩的なご質問で恐縮ですが、文字列の変換についてご教授ください。
(使用言語:C++)

下記に示すそれぞれのパターンにて、
文字列をbufに1バイトずつ格納するにはどのように行えばよろしいでしょうか?
的外れなご質問もあるかと思いますが、よろしくお願いします。

@文字列"ABC"をアスキーコード値で1バイトずつ格納する。
buf[0]=0x41
buf[1]=0x42
buf[2]=0x43

A文字列"300"を16進数の値で1バイトずつ格納する。
buf[0]=0x01
buf[1]=0x2C

B文字列"8"を以下のように格納する。
buf[0]=0x08

C文字列"0x20"を以下のように格納する。
buf[0]=0x20

引用返信 編集キー/
■54577 / inTopicNo.2)  Re[1]: 文字列の様々な変換について
□投稿者/ ちゃっぴ (44回)-(2010/10/27(Wed) 00:28:30)
ちゃっぴ さんの Web サイト
buf の型は何?
引用返信 編集キー/
■54580 / inTopicNo.3)  Re[2]: 文字列の様々な変換について
□投稿者/ 新参者 (4回)-(2010/10/27(Wed) 06:18:36)
No54577 (ちゃっぴ さん) に返信
> buf の型は何?

すみません、char型になります。
引用返信 編集キー/
■54582 / inTopicNo.4)  Re[3]: 文字列の様々な変換について
□投稿者/ 774RR (549回)-(2010/10/27(Wed) 08:38:15)
うーん自分で答えを書かれているので正直何を聞いているのか不明・・・
(1) (2) それって答えなんぢゃないの?
ものすごくエスパーするに、
(3) 要するに atoi/strtol/strtoul と言って欲しいわけかな?
(4) 同じく strtol/strtoul ?

引用返信 編集キー/
■54603 / inTopicNo.5)  Re[4]: 文字列の様々な変換について
□投稿者/ 新参者 (5回)-(2010/10/27(Wed) 12:52:09)
No54582 (774RR さん) に返信
> うーん自分で答えを書かれているので正直何を聞いているのか不明・・・
> (1) (2) それって答えなんぢゃないの?
> ものすごくエスパーするに、
> (3) 要するに atoi/strtol/strtoul と言って欲しいわけかな?
> (4) 同じく strtol/strtoul ?
>

プログラミングに関して、あまり行った経験がなく、
自分でもうまく整理できていない状況で質問してしまい、申し訳ありません。。。

はい、お聞きしたい事項は、
最終結果として@〜Cのように1バイトのデータを設定するためには、
文字列から文字をどのように取り出して、どう変換をかけて設定すればよいかを
お聞きしたいと思っております。
引用返信 編集キー/
■54604 / inTopicNo.6)  Re[5]: 文字列の様々な変換について
□投稿者/ ミラ (13回)-(2010/10/27(Wed) 13:03:09)
string aa = "abcdef";
aa[0]で最初の"a"が取り出せますってことを聞いてますか?
引用返信 編集キー/
■54619 / inTopicNo.7)  Re[1]: 文字列の様々な変換について
□投稿者/ PATIO (44回)-(2010/10/27(Wed) 18:21:49)
2010/10/27(Wed) 18:24:02 編集(投稿者)

No54576 (新参者 さん) に返信

char buf[4];だとかとします。

> @文字列"ABC"をアスキーコード値で1バイトずつ格納する。
> buf[0]=0x41
> buf[1]=0x42
> buf[2]=0x43

それで良いと思いますけれど、strcpyとかで"ABC"を入れる方法をとらないのはなぜ?



> A文字列"300"を16進数の値で1バイトずつ格納する。
> buf[0]=0x01
> buf[1]=0x2C

文字列として"300"が渡されて、これをバイナリ値に変換した後、
1バイトずつ分解して設定するって事ですかね?
この設定だとビッグエンディアンになってますが、それで大丈夫?


> B文字列"8"を以下のように格納する。
> buf[0]=0x08

これも文字列"8"をもらってバイナリ値にし、
charの変数に設定したいと言うことですかね。
数字文字列から数値に変えたいなら
既に774RRさんが関数の例を出してくれてますけれど。


> C文字列"0x20"を以下のように格納する。
> buf[0]=0x20

文字列"0x20"を受け取ってバイナリ値にし、
charの変数に設定したいということですかね。
これも774RRさんが関数の例を出してくれてますよ。

せっかく関数を例に出してくれているのですから
関数名で調べましょうよ。
何をしてくれる関数かわかるはずですから。

あと、基本の部分がふらついているのであれば、
入門書を何度も読みかえてして見てください。
何か理解しきれないまま先に進んでしまっていないでしょうか。
自分が何処が分からないのかをはっきりさせる事は理解の第一歩です。

引用返信 編集キー/
■54622 / inTopicNo.8)  Re[5]: 文字列の様々な変換について
□投稿者/ PATIO (45回)-(2010/10/27(Wed) 18:31:20)
2010/10/27(Wed) 18:34:12 編集(投稿者)

No54603 (新参者 さん) に返信
> プログラミングに関して、あまり行った経験がなく、
> 自分でもうまく整理できていない状況で質問してしまい、申し訳ありません。。。
>
> はい、お聞きしたい事項は、
> 最終結果として@〜Cのように1バイトのデータを設定するためには、
> 文字列から文字をどのように取り出して、どう変換をかけて設定すればよいかを
> お聞きしたいと思っております。

ただ単純に"ABC"と書かれた物を変数を通さずに処理は出来ないと思いますけれど。

例えばですが、
char buf[] = "ABC";とか、char *p = "ABC";
とかすれば、一番目の文字をbuf[0]とか、
二番目の文字を*(p+1);とかで取り出すのはできると
思いますけれど、何もなしにいきなり0x41が出てきたりしないと思いますよ。
基本的にデータ操作をする為には何らかの変数に格納する必要があると思います。
というか、関数に対してデータを引き渡す時は既に変数の状態で引き渡されているはずです。
引用返信 編集キー/
■54627 / inTopicNo.9)  Re[2]: 文字列の様々な変換について
□投稿者/ 774RR (555回)-(2010/10/27(Wed) 20:06:15)
とりあえず宿題ならもうそろそろ期限切れだろうし・・・
(1) strcpy(buf, "ABC"); // 設問とは若干挙動が異なるので0点かも知れない
(2) (3) (4) はすべて [ 文字列→整数値 ] 変換なので strtol が共通に使えて
(2) long x=strtol("300", 0, 0);
buf[0]=x>>8;
buf[1]=x&0xFF;
(3) buf[0]=strtol("8", 0, 0);
(4) buf[0]=strtol("0x20", 0, 0);
// いずれもキャスト略

課題であるなら、あまり適切とは思えない。俺はこの課題出した人のセンスを疑うな。
# 基本実行文字集合が ASCII でない環境なら (1) は確実に0点だし。
引用返信 編集キー/
■54635 / inTopicNo.10)  Re[6]: 文字列の様々な変換について
□投稿者/ .SHO (1372回)-(2010/10/28(Thu) 00:15:08)
No54622 (PATIO さん) に返信

> ただ単純に"ABC"と書かれた物を変数を通さずに処理は出来ないと思いますけれど。

"ABC"[0]で0x41が取れなくもないけどね。。。
引用返信 編集キー/
■54639 / inTopicNo.11)  Re[7]: 文字列の様々な変換について
□投稿者/ PATIO (48回)-(2010/10/28(Thu) 10:02:49)
2010/10/28(Thu) 10:04:11 編集(投稿者)

No54635 (.SHO さん) に返信
> ■No54622 (PATIO さん) に返信
>
>>ただ単純に"ABC"と書かれた物を変数を通さずに処理は出来ないと思いますけれど。
>
> "ABC"[0]で0x41が取れなくもないけどね。。。

おおっ、それでも大丈夫だったんだ。
できると言うのは納得できますけれど、あんまり意味がなさそうですね。
"ABC"[0]って書くくらいなら、直接'A'と書いた方が早いし。
記述ができるって事と処理的に意味があるかは別ですしねぇ。

質問している方が問題の意図を理解しているかが問題かも。
どんな答えを期待しているのか?
(これがもし課題ならと言う話になりますが)

引用返信 編集キー/
■54645 / inTopicNo.12)  Re[3]: 文字列の様々な変換について
□投稿者/ 新参者 (6回)-(2010/10/28(Thu) 12:18:09)

色々と助言いただき、ありがとうございます。
上記コメントをもとに試したところ、解決しました。

もっと参考書等調べて、勉強します。
本当にありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -