【发布时间】:2011-06-05 20:47:10
【问题描述】:
我有一个浮点数组,需要转换为字节数组并返回浮点[]...谁能帮我正确地做到这一点?
我正在使用 bitConverter 类,发现自己在尝试追加结果时遇到了困难。
我这样做的原因是我可以将运行时值保存到 IO 流中。目标存储是 Azure Page blobs,以防万一。我不关心它存储在什么字节序中,只要它输入与输出匹配即可。
static byte[] ConvertFloatToByteArray(float[] floats)
{
byte[] ret = new byte[floats.Length * 4];// a single float is 4 bytes/32 bits
for (int i = 0; i < floats.Length; i++)
{
// todo: stuck...I need to append the results to an offset of ret
ret = BitConverter.GetBytes(floats[i]);
}
return ret;
}
static float[] ConvertByteArrayToFloat(byte[] bytes)
{ //to do }
【问题讨论】:
-
你能处理内存流的序列化/反序列化吗?然后,您可以从流中获取
byte数组或从byte数组构造流。 -
使用 .Net 序列化方法?我宁愿不包含任何 XML,而只获取原始位数据……系统已经过优化,每一位都被考虑在内……
-
你可以做二进制序列化而不是 XML 序列化:msdn.microsoft.com/en-us/library/…
-
@martinho - 据我所知,序列化对象的长度是否与浮点数组的长度完全相同?换句话说,字节偏移量 4 是否总是与传入的 float[3] 值相同,而忽略字节序?没有 XML 垃圾?
-
它不会包含 XML,但这可能是矫枉过正。我只是提到你可以在没有 XML 的情况下进行序列化。我不确定生成的字节数组会是什么样子,但它可以毫无困难地双向工作。
标签: c# .net floating-point bytearray endianness