C言語では
printf(”%4.4s”, ”あいう”) → あい
printf(”%4.4s”, ”12345”) → 1234
このように必ず先頭4バイト(4文字ではなくて)のみ表示されるようなC#のシンプルなコードはどのようなものですか?
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) );
でしょうか。
http://ruffnex.oc.to/ipusiron/cgi/forum/patio.cgi
質問掲示板@Security Akademeia
またですか・・・・
ここのサイトで質問してください
ペコリ(o_ _)o))
.NET環境において質問のような文字数の数えかたをするには、Encodingクラスを使用するのがよいでしょう。
まず、適切なエンコーディング(UTF-8, ShiftJIS等)で文字列をバイト列に変換し、その先頭4バイトを再び文字列に変換する、という手順を踏みます。
System.Text.Encoding encoding = System.Text.Encoding.UTF8;
Console.WriteLine(encoding.GetString(encoding.GetBytes(”あいう”), 0, 4));
あまりシンプルじゃありませんね。。。
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);
質問の意味をとりちがえていたら、ごめんなさい。
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));
}
}
こんなんでどうでしょう…?
自分の環境では上手くいきました。
有り難う御座います!
質問が不完全でしたねm(..)m。 全角2文字、半角1文字と数えた場合に、常に最初の4文字を取り出すコードを知りたかったのですが。。。