将int转换为char数组而不影响堆

时间:2016-02-06 13:37:47

标签: c# bytearray .net-micro-framework

我需要在Micro Framework中将int转换为字节数组,以便将其传输到串行。这发生在代码的时间敏感区域,其中由垃圾收集器引起的延迟可能花费太长时间。

通常我会将int转换为字符串,然后将其转换为char数组。但是这会创建一个冒着垃圾收集风险的堆对象。

有一种有效的方法吗?我可以在一个使用模10算术的循环中完成它但速度很慢。在C中,我使用sprintf转换为预先分配的数组,这很好。

2 个答案:

答案 0 :(得分:2)

您可以使用BitConverter执行此类任务。

但是,如果您确实需要从序列化二进制文件中挤出每一盎司的空间/性能,我建议您先查看ProtoBuf。将数据序列化为二进制blob几乎没有更好/更快的方法。然后,您将能够通过网络发送或保存到磁盘,或将其存储在内存中以用于缓存。

答案 1 :(得分:1)

不确定它是否在Micro Framework中可用,但其中一个BitConverter.GetBytes重载应该可以解决问题。