【发布时间】:2011-02-11 07:28:38
【问题描述】:
我想创建一个包含 int32、int16、单个值的内存流。使用 binarywriter 是没用的,所以我尝试制作字节数组。因为值的类型不同,所以我不知道如何正确地做到这一点。所以我尝试这样做:
byte[] tab = new byte[]{2,0,0,0,3,0,3,0} - 2 是 int32(四个字节),另外两个 3 是 int16(两个字节)
这很好,但是当我想添加一些单个值时,它会产生错误。我不能那样做:
byte[] tab = new byte[]{2,0,0,0,3,0,3,0,4.4f,5.6f}
我必须有正确格式的流,因为该流将在此方法中被读取:
short[] rawData;
float[] modulusData;
public void rawData(Stream s)
{
BinaryReader br = new BinaryReader(s);
int dataCount = br.ReadInt32();
if (dataCount > 0)
{
rawData = new short[dataCount];
for (int i = 0; i < dataCount; i++)
rawData[i] = br.ReadInt16();
}
else
rawData = new short[0];
dataCount = br.ReadInt32();
if (dataCount > 0)
{
modulusData = new float[dataCount];
for (int i = 0; i < dataCount; i++)
modulusData[i] = br.ReadSingle();
}
else
modulusData = new float[0];
}
有人知道怎么做吗??
【问题讨论】:
-
更重要的是 - 这应该做什么?你有格式的规格吗?目前,您正在从流中读取一些数字,并使用该信息来推进阅读器并选择接下来要阅读的内容。看来您的数据对于格式根本无效(前提是 rawData 方法实际上做了它应该做的事情)。
标签: c# floating-point byte memorystream