‘C#’ カテゴリーのアーカイブ

.Net Frameworkでbase64形式ASCIIテキストのエンコード、デコードを行うには

2009年9月8日 火曜日

エンコーディングは一旦ASCIIのバイト列に変換し、System.ConvertクラスのToBase64Stringメソッドを使う。

string base64Str = Convert.ToBase64String(Encoding.ASCII.GetBytes(textData)));

デコーディングはSystem.ConvertクラスのFromBase64Stringメソッドを使ってASCIIテキストのバイト列を取り出し、stringに変換する。

string textData = Encoding.ASCII.GetString(Convert.FromBase64String(“dGVzdA==”));

変数の値がNullの場合に代替の値に簡単に置き換えるには

2008年11月27日 木曜日

下記のように??演算子を使用できる。

string str = str2 ?? string.Empty

C#でオブジェクト<->JSONの変換を行うには

2008年7月8日 火曜日

C#でオブジェクトをJSON形式でシリアライズするにはまずシリアライズするクラスにDataContract属性とそのプロパティにDataMember属性を設定しておく。

[System.Runtime.Serialization.DataContract()]
public class Class1
{
    [System.Runtime.Serialization.DataMember()]
    public int Number001 { get; set; }
    [System.Runtime.Serialization.DataMember()]
    public string Text001 { get; set; }
}

DataContractJsonSerializerを使用して下記のようにシリアライズ、デシリアライズを行える。

    class Program
    {
        static void Main(string[] args)
        {
            var serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Class1));
            // Class1のインスタンスをJSONにシリアライズ
            var stream = new System.IO.MemoryStream();
            serializer.WriteObject(stream, new Class1() { Number001 = 123, Text001 = "あああ" });
            var jsonStr = Encoding.UTF8.GetString(stream.ToArray());
            // JSONをClass1のインスタンスにデシリアライズ
            byte[] bytes = Encoding.UTF8.GetBytes(jsonStr);
            stream = new System.IO.MemoryStream(bytes);
            Class1 class1 = (Class1)serializer.ReadObject(stream);
        }
    }

注)以前の記事はWCFが内部的に使用するクラス(JsonQueryStringConverter)を使っていたので書き換えた。

Windows Form WebBrowserコントロールのNavigateメソッドでPOSTを送信するには

2008年7月5日 土曜日

param1というパラメータに”テスト”という文字列をセットして送信するC#のサンプル。

string params = “param1=” + HttpUtility.UrlEncode(“テスト”);
byte[] postData = new ASCIIEncoding().GetBytes(params);
string headers = “Content-Type: application/x-www-form-urlencoded\r\n”
webBrowser1.Navigate(“http://localhost/Test.aspx”, null, postData, headers);

C#でDateTime型を文字列として出力するときの日時書式指定子

2008年7月4日 金曜日
var dt = new DateTime(2008, 7, 4, 12, 34, 56);
dt.ToString(“d”)
dt.ToString(“D”)
dt.ToString(“f”)
dt.ToString(“F”)
dt.ToString(“g”)
dt.ToString(“G”)
dt.ToString(“m”)
dt.ToString(“r”)
dt.ToString(“s”)
dt.ToString(“t”)
dt.ToString(“T”)
dt.ToString(“u”)
dt.ToString(“U”)
dt.ToString(“y”)
2008/07/04
2008年7月4日
2008年7月4日 12:34
2008年7月4日 12:34:56
2008/07/04 12:34
2008/07/04 12:34:56
7月4日
Fri, 04 Jul 2008 12:34:56 GMT
2008-07-04T12:34:56
12:34
12:34:56
2008-07-04 12:34:56Z
2008年7月4日 3:34:56
2008年7月

カスタム書式の場合

var dt = new DateTime(2008, 7, 4, 13, 2, 3, 78);
dt.ToString(“年:yyyy yy y”)
dt.ToString(“月:MMMM MM M”)
dt.ToString(“日:dddd ddd dd d”)
dt.ToString(“時:HH hh H h tt”)
dt.ToString(“分:mm m”)
dt.ToString(“秒:ss s”)
年:2008 08 8
月:7月 07 7
日:金曜日 金 04 4
時:13 01 13 1 午後
分:02 2
秒:03 3

C# で数値を文字列として出力するときの書式指定子

2008年7月4日 金曜日

int n = 1234; に対して

int n = 1234; double n = 1234.56
n.ToString(“C6″)通貨
n.ToString(“D6″)10進数
n.ToString(“E6″)指数
n.ToString(“F6″)固定小数点
n.ToString(“R6″)浮動小数点
n.ToString(“G6″)一般または科学
n.ToString(“N6″)数値
n.ToString(“P6″)パーセント
n.ToString(“X6″)16進数
¥1,234.000000
001234
1.234000E+003
1234.000000
NA
1234
1,234.000000
123,400.000000%
0004D2
¥1,234.560000
NA
1.234560E+003
1234.560000
1234.56
1234.56
1,234.560000
123,456.000000%
NA

カスタム書式指定の場合

double n = 1234567.89; double n = 0;
n.ToString(“0.#”)
n.ToString(“#0.#”)
n.ToString(“#0.##”)
n.ToString(“#0.###”)
n.ToString(“#0.0″)
n.ToString(“#0.00″)
n.ToString(“#0.000″)
n.ToString(“#,0.000″)
n.ToString(“0,0.000″)
n.ToString(“000,000,000.000″)
1234567.9
1234567.9
1234567.89
1234567.89
1234567.9
1234567.89
1234567.890
1,234,567.890
1,234,567.890
001,234,567.890
0
0
0
0
0.0
0.00
0.000
0.000
00.000
000,000,000.000