私のコードでは、整数の文字列表現を値に変換する必要がlong
ありdouble
ます。
文字列表現はバイト配列 ( byte[]
) です。たとえば、数値12345
文字列表現は{ 49, 50, 51, 52, 53 }
現在、 への変換には次の明らかなコードを使用しますlong
(および への変換にはほぼ同じコードを使用しますdouble
) 。
private long bytesToIntValue()
{
string s = System.Text.Encoding.GetEncoding("Latin1").GetString(bytes);
return long.Parse(s, CultureInfo.InvariantCulture);
}
このコードは期待どおりに機能しますが、私の場合はもっと良いものが必要です。現在、最初にバイトを文字列に変換する必要があるためです。
私の場合、bytesToIntValue()
約 1200 万回呼び出され、すべてのメモリ割り当ての約 25% がこのメソッドで行われます。
確かに、私はこの部分を最適化したいです。中間文字列なしで変換を実行したい (+ 速度、- 割り当て)。
あなたは何をお勧めします?中間文字列なしで変換を実行するにはどうすればよいですか? 変換を実行するためのより高速な方法はありますか?
編集:
私が扱っているバイト配列には、常に ASCII エンコードされたデータが含まれています。数値は負になる場合があります。double 値の場合、指数形式が許可されます。16 進整数は使用できません。