C# MSDN示例:这是错误还是优化(X509Certificate2类)

C# MSDN示例:这是错误还是优化(X509Certificate2类),c#,.net,stream,msdn,x509,C#,.net,Stream,Msdn,X509,我在看这个MSDN页面中的好例子: 向下滚动到示例的一半,查看方法: // Decrypt a file using a private key. private static void DecryptFile(string inFile, RSACryptoServiceProvider rsaPrivateKey) 您会注意到读卡器在试图从流中读取int时,一次只读取3个字节: inFs.Seek(0, SeekOrigin.Begin); inFs.Read(LenK, 0, 3);//

我在看这个MSDN页面中的好例子:

向下滚动到示例的一半,查看方法:

// Decrypt a file using a private key.
private static void DecryptFile(string inFile, RSACryptoServiceProvider rsaPrivateKey)
您会注意到读卡器在试图从流中读取int时,一次只读取3个字节:

inFs.Seek(0, SeekOrigin.Begin);
inFs.Read(LenK, 0, 3);// <---- this should be 4
inFs.Seek(4, SeekOrigin.Begin);// <--- this line masks the bug for smaller ints
inFs.Read(LenIV, 0, 3); // <---- this should be 4
inFs.Seek(0,SeekOrigin.Begin);

信息读取(LenK,0,3);// 我非常怀疑这是一种优化。磁盘读取的数据块往往比四个字节大得多,高速缓存几乎会使这种优化失效,除非在极少数情况下,四个字节可能跨越两个不同的磁盘“扇区”(或磁盘读取分辨率是多少)

这种模式通常只使用三个字节,而实现将其他信息存储在那里

这里并不是说这是事实,但你可能想看看某些大公司为自己的目的使用领域的历史,不管标准怎么说,“拥抱、延伸、消灭”: