【发布时间】:2012-06-19 17:36:17
【问题描述】:
我正在尝试制作一种加密算法。 我可以毫无问题地读取文件并将其转换为字节,并将字节保存在 byteArray 中。
问题是我目前正在创建这样的数组大小:
byte[] FileArray =new byte[10000000];
FileStream TheFileStream = new FileStream(FilePath.Text, FileMode.Open);
BinaryReader TheFileBinary = new BinaryReader(TheFileStream);
for (int i = 0; i < TheFileStream.Length; i++) {
FileArray = TheFileBinary.ReadBytes(10000000);
// I call a function here
if (TheFileStream.Position == TheFileStream.Length)
break;
}
但是,我不希望数组大小固定,因为如果我将其设为 1000000(例如),其他内存大小较小的机器可能会遇到问题。 我需要找到每台机器的内存大小的 Idle 大小,如何根据空闲的未分配内存空间动态设置数组大小,以便在可以放入 byteArray 的地方使用?
我注意到 Arraysize 越大读取速度越快,所以我也不想让它太小。 非常感谢您的帮助。
【问题讨论】:
-
am trying to make an encryption algorithm这可能是个错误。安全加密是hard。 -
您要求的大约 10MB 是一个很小的数量。你为什么担心这里的内存问题?你遇到问题了吗?您是否预计未来在 10MB 很多的设备上会出现特定问题?
-
(可以说)更好的方法是制作自己的 Stream。
-
这可能是一个愚蠢的问题,但如果你想要一个动态大小的数组,为什么不使用
List<byte>? -
他不想要一个动态大小的数组,他想要一个大小在运行时决定的数组。