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

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

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

Re[2]: C# int型の数値の桁ごとの文字コード獲得方法


(過去ログ 118 を表示中)

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

■69213 / inTopicNo.1)  C# int型の数値の桁ごとの文字コード獲得方法
  
□投稿者/ たろう (1回)-(2013/12/10(Tue) 08:52:02)

分類:[C#] 

Visual studio2008を使ってコードを書いています。
int型の数字の一文字ずつのACSII文字コードの獲得方法、数値の文字列長を獲得する方法について質問させてください。
例えば
  int a = 123;
というint型のaを一桁目、二桁目、三桁目をそれぞれわけて文字コードに変換しbyte配列に代入しようとしています。
BitConverter.GetBytesを使用してみたのですがbyte[0]に123が入ってしまい上手くいきません。
byte[0] = 1の文字コード byte[1] = 2の文字コード byte[2] = 3の文字コード
という風にしたいのですがどうしたらいいでしょうか?


また数字の長さ(123なら3、12345なら5というような)を獲得したいんですがこれはどうすればいいでしょうか?
よければよろしくお願いします。
引用返信 編集キー/
■69214 / inTopicNo.2)  Re[1]: C# int型の数値の桁ごとの文字コード獲得方法
□投稿者/ an (10回)-(2013/12/10(Tue) 09:34:38)
No69213 (たろう さん) に返信

> 例えば
>   int a = 123;
> というint型のaを一桁目、二桁目、三桁目をそれぞれわけて文字コードに変換しbyte配列に代入しようとしています。
> BitConverter.GetBytesを使用してみたのですがbyte[0]に123が入ってしまい上手くいきません。
> byte[0] = 1の文字コード byte[1] = 2の文字コード byte[2] = 3の文字コード
> という風にしたいのですがどうしたらいいでしょうか?

EncodingクラスのGetBytesメソッドに対象の数値変数の値を文字列化した値を送れば
取得できると思います。

int a = 123;
byte[] byteArray;
byteArray = System.Text.Encoding.UTF8.GetBytes(a.ToString());

「UTF8」の部分は対象の文字コードを指定してください。
「GetEncoding(コードページID)」でも良いです。
詳細はMSDNや以下のサイトをご覧ください。
http://dobon.net/vb/dotnet/string/getencoding.html#getbytes

コードページIDの一部はこちらに載っていました。
http://dobon.net/vb/dotnet/file/readfile.html



> また数字の長さ(123なら3、12345なら5というような)を獲得したいんですがこれはどうすればいいでしょうか?
> よければよろしくお願いします。

「一旦文字化してから文字数を取得」でよければ、

int a = 123;
int length = a.ToString().Length;

これで行けます。
数値としてっていうとlog等の計算がややこしいので説明できません・・・。

引用返信 編集キー/
■69215 / inTopicNo.3)  Re[1]: C# int型の数値の桁ごとの文字コード獲得方法
□投稿者/ ムドー (11回)-(2013/12/10(Tue) 09:36:11)
2013/12/10(Tue) 09:40:05 編集(投稿者)
2013/12/10(Tue) 09:39:56 編集(投稿者)

No69213 (たろう さん) に返信
> Visual studio2008を使ってコードを書いています。
> int型の数字の一文字ずつのACSII文字コードの獲得方法、数値の文字列長を獲得する方法について質問させてください。
> 例えば
>   int a = 123;
> というint型のaを一桁目、二桁目、三桁目をそれぞれわけて文字コードに変換しbyte配列に代入しようとしています。
> BitConverter.GetBytesを使用してみたのですがbyte[0]に123が入ってしまい上手くいきません。
> byte[0] = 1の文字コード byte[1] = 2の文字コード byte[2] = 3の文字コード
> という風にしたいのですがどうしたらいいでしょうか?

お疲れ様です。

int→byteへの変換は理解していそうなのでintの各桁を分解することが分かればいけそうですね。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1381404463
上記URLでintの各桁を分解しint配列に入れてやることをしてますので理解すれば解決できるかと思います。

> また数字の長さ(123なら3、12345なら5というような)を獲得したいんですがこれはどうすればいいでしょうか?
> よければよろしくお願いします。
数字を文字列にしてやって文字列の長さを取得できます。上記URLにもさらっと書いてあります。

以上、

誤字修正
引用返信 編集キー/
■69216 / inTopicNo.4)  Re[1]: C# int型の数値の桁ごとの文字コード獲得方法
□投稿者/ 魔界の仮面弁士 (459回)-(2013/12/10(Tue) 09:36:36)
2013/12/10(Tue) 09:53:24 編集(投稿者)

# うむ。予想通り被りまくり。

No69213 (たろう さん) に返信
> ACSII文字コード
ASCII ですね。

> 数値の文字列長を獲得する方法
負数やゼロをどのように扱うのかにもよりますが、とりあえず
 int length = a.ToString().Length;
とか。この他、10 で繰り返し割っていって、その回数を数えるという手法もあります。

> int型のaを一桁目、二桁目、三桁目をそれぞれわけて文字コードに変換し
こちらは
 byte[] binary = System.Text.Encoding.ASCII.GetBytes(a.ToString());
ですかね。あるいは
 byte[] binary = (from c in a.ToString() select (byte)(int)c).ToArray();
とか。


> また数字の長さ(123なら3、12345なら5というような)を獲得したいんですが
既に上記で回答済みですが、別案としては常用対数をとって
 int length = (int)Math.Floor(1 + Math.Log10((double)a));
とか。相手が自然数でないと使えませんけれどね。
引用返信 編集キー/
■69223 / inTopicNo.5)  Re[1]: C# int型の数値の桁ごとの文字コード獲得方法
□投稿者/ an (11回)-(2013/12/10(Tue) 10:18:39)
No69213 (たろう さん) に返信

> int型の数字の一文字ずつのACSII文字コードの獲得方法、数値の文字列長を獲得する方法について質問させてください。

ASCII文字コードなのですね・・・。
ちゃんと読んでませんでした。

ならば、自分が記載した
byteArray = System.Text.Encoding.UTF8.GetBytes(a.ToString());
ではなく、魔界の仮面弁士さんが記載した
System.Text.Encoding.ASCIIを使う方が正しいですね。


引用返信 編集キー/
■69227 / inTopicNo.6)  Re[2]: C# int型の数値の桁ごとの文字コード獲得方法
□投稿者/ たろう (3回)-(2013/12/10(Tue) 10:45:24)
回答してくださってみなさんありがとうございます。

最初の問いは対象の数値を文字列化して変換することで実現できました。
二番目も同様に文字列化してLengthを使うことで数値の長さを獲得することができました。

文字列化するだけでなく様々な方法もあるようなので今後勉強していくことにします。
ありがとうございました
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -