C# 图像字节[]长度因服务器而异

C# 图像字节[]长度因服务器而异,c#,C#,我在我的项目中嵌入了一个作为资源的图像,以及使用nhibernate将图像作为字节[](字节数组)保存到db的代码 然后,我有代码断言db中的图像与我选择保存的图像匹配 在本地开发环境中运行时,两个字节[]的序列和长度相同 Assert.IsTrue(imageInDb.SequenceEqual(imageOnFile), errorMessage); 为了查看,我将一个图像作为本地资源嵌入,并使用nhibernate将其作为字节[]保存到db,以获取字节[],我使用以下方法: imageO

我在我的项目中嵌入了一个作为资源的图像,以及使用nhibernate将图像作为字节[](字节数组)保存到db的代码

然后,我有代码断言db中的图像与我选择保存的图像匹配

在本地开发环境中运行时,两个字节[]的序列和长度相同

Assert.IsTrue(imageInDb.SequenceEqual(imageOnFile), errorMessage);
为了查看,我将一个图像作为本地资源嵌入,并使用nhibernate将其作为字节[]保存到db,以获取字节[],我使用以下方法:

imageOnFile = Properties.Resources.MyImage.ToByteArray();
它保存正确,长度为66510。然而,在我的一个测试代理上,imageOnFile长度报告为65413

这很奇怪,因为最初是使用完全相同的代码来获取保存数据,然后是断言数据。因此,如果在断言期间字节数组len是65413,我希望它在save操作期间保存了一个65413

当我使用本地dev环境再次检查代码时,很明显它是有效的

我错过了什么


编辑:从我的本地开发环境中使用len66510保存初始映像,然后,现在在测试代理上运行的imageOnFile(来自嵌入式资源)会报告磁盘65413上的字节[]len。因此,它可能与文件系统有关?

您是否检查了差异所在?请查看两种不同驱动器的群集大小。我怀疑您的本地驱动器和测试代理驱动器之间存在差异,这意味着磁盘上占用的大小将不同(更多详细信息和@BerndInde无论驱动器的群集大小如何,内存中的字节数组都应该具有相同的大小。@Magnus,这是正确的,是的,但JL正在谈论存储的映像,请检查他的上次编辑:)@BerndLinde:不管数据是在内存中还是在磁盘上,它仍然具有相同的长度。磁盘上的块/群集大小只会影响存储的空间效率;文件系统会在读取文件的过程中隐藏/抽象这一点。群集大小的差异与is无关sue OP看到了。这一点尤其正确,因为报告的数字都不是任何合理区块大小的倍数。