2

構成ファイルからクラスに符号なし整数の束を読み込もうとしています。これらの番号は、基数10(例:1234)または基数16(例:0xAB31)のいずれかで指定できます。strtoulしたがって、C#2.0で同等のものを探します。

具体的には、基数または基数を示す引数がゼロとして渡されたときのこの関数の動作を模倣するC#関数に興味があります。(C ++では、strtoul文字列の最初の数文字に基づいて基数または基数を「推測」し、数値を適切に変換しようとします)

現在、文字列の最初の2文字を(メソッドを使用して)手動でチェックしてから、または必要に応じてstring.Substring()呼び出しています。Convert.ToUInt32(hex, 10)Convert.ToUInt32(hex, 16)

この問題、したがってこの投稿に対処するためのより良い方法が必要だと確信しています。よりエレガントなアイデア/ソリューションまたは回避策が大いに役立ちます。

4

1 に答える 1

5

16進数でない限り、Substringを使用する必要はありませんが、基本的に正しい方法で実行しているように見えます。

return text.StartsWith("0x") ? Convert.ToUInt32(text.Substring(2), 16)
                             : Convert.ToUInt32(text, 10);

Substring明らかに、これは呼び出しのための追加のオブジェクトを作成し、これに対処するために独自の16進解析コードを書くことができます-しかし、このアプローチで実際にパフォーマンスの問題に遭遇しない限り、私はそれを単純に保ちます。

于 2011-05-21T06:42:48.567 に答える