C#プログラマにお聞きします。

C言語では
 printf(”%4.4s”, ”あいう”) → あい
 printf(”%4.4s”, ”12345”) → 1234
このように必ず先頭4バイト(4文字ではなくて)のみ表示されるようなC#のシンプルなコードはどのようなものですか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:kimizu No.1

回答回数726ベストアンサー獲得回数21

ポイント5pt

http://www-ise2.ist.osaka-u.ac.jp/~iwanaga/study/csharp/st_embed...

組込み型 (C# によるプログラミング入門)

まず、C#では、char型は2byteです。

Unicodeを採用しているため、全ての文字を

2byteで表現しています。半角/全角に関わらず、全てです。

http://www.microsoft.com/japan/msdn/academic/Articles/Algorithm/...

アルゴリズム入門 : 第 1 章 Visual C# による文字列処理入門

よって、4byte取り出すには、2文字取り出せば

良いはずです。


string s = ”あいう”;

Console.WriteLine( s.SubString(0,4) );


でしょうか。

id:toaraich

質問が不完全でしたねm(..)m。 全角2文字、半角1文字と数えた場合に、常に最初の4文字を取り出すコードを知りたかったのですが。。。

2006/02/10 13:05:19
id:kazuki12112005 No.2

回答回数16ベストアンサー獲得回数0

http://ruffnex.oc.to/ipusiron/cgi/forum/patio.cgi

質問掲示板@Security Akademeia

またですか・・・・


ここのサイトで質問してください


ペコリ(o_ _)o))

id:birdie-brain No.3

回答回数40ベストアンサー獲得回数4

ポイント30pt

.NET環境において質問のような文字数の数えかたをするには、Encodingクラスを使用するのがよいでしょう。

まず、適切なエンコーディング(UTF-8, ShiftJIS等)で文字列をバイト列に変換し、その先頭4バイトを再び文字列に変換する、という手順を踏みます。


System.Text.Encoding encoding = System.Text.Encoding.UTF8;

Console.WriteLine(encoding.GetString(encoding.GetBytes(”あいう”), 0, 4));


あまりシンプルじゃありませんね。。。

id:skaede No.4

回答回数13ベストアンサー獲得回数0

ポイント20pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

ご質問の内容を”Unicode文字列の先頭から、Shift JISで4バイト分だけコンソールに出力したい”と理解しました。


こんなかんじになるかと。


byte[] bytes = System.Text.Encoding.Default.GetBytes(”あいう”);

System.Text.Decoder dec = System.Text.Encoding.Default.GetDecoder();

char[] buffer = new char[4];

dec.GetChars(bytes,0,4,buffer,0);

Console.WriteLine(buffer);


質問の意味をとりちがえていたら、ごめんなさい。

id:lupu No.5

回答回数214ベストアンサー獲得回数0

ポイント30pt

http://www.microsoft.com/japan/msdn/library/default.asp?url=/jap...

MSDN ライブラリ サイト移行に関する重要なお知らせ

using System;

using System.Text;


class Sample

{

  public static void Main()

  {

    string text1 = ”あいうえお”;

    string text2 = ”12345”;


    Encoding ansi = Encoding.Default;

    Console.WriteLine(ansi.GetString(ansi.GetBytes(text1), 0, 4));

    Console.WriteLine(ansi.GetString(ansi.GetBytes(text2), 0, 4));

  }

}


こんなんでどうでしょう…?

自分の環境では上手くいきました。

id:toaraich

有り難う御座います!

2006/02/15 09:41:59

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

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

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

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

回答リクエストを送信したユーザーはいません