在我的代码中,我需要将整数的字符串表示形式转换为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 编码的数据。数字可以是负数。对于双值指数格式是允许的。不允许使用十六进制整数。