我有一个二进制文件。一条数据可以是 8,16,32,64 位有符号和无符号 int。我正在尝试编写模板函数,这是我到目前为止所做的:
public T[] GetLayerBytes<T>(int LayerNum)
{
int typeSize = Marshal.SizeOf(typeof(T));
int layerPixelCount = typeSize * bitmapWidth * bitmapHeigth;
string recFileName = "my.rec";
using (FileStream fs = File.OpenRead(recFileName))
using (BinaryReader br = new BinaryReader(fs))
{
fs.Seek(layerPixelCount * LayerNum, SeekOrigin.Begin);
T[] b = new T[layerPixelCount];
//fs.Read(b, 0, layerPixelCount); this doesn't work
//br.Read(b, 0, layerPixelCount); this doesn't work too
return b;
}
}
在 C++ 中,我会为此使用CFile::Read。
有什么方法可以读取字节/int16/uint16 等,类似于我尝试过的没有针对不同T
类型的开关/案例的方法?
提前感谢所有可能的优雅解决方案。