我使用此函数计算文件的二进制大小:
public static int BinarySize(string path)
{
FileStream fs = new FileStream(path, FileMode.Open);
int hexIn;
string ret = "";
for (int i = 0; (hexIn = fs.ReadByte()) != -1; i++)
{
ret += Convert.ToString(hexIn, 2);
}
fs.Close();
return ret.Length;
}
我的问题的一个例子是我计算这个简单的黑色PNG图像的尺寸(10x10像素)
使用该功能,我发现640位=> 80字节,但窗口说这个文件维度是136字节。 为什么这个56字节的差异? Windows附加到每个文件的安全性,权限或一些私人信息是什么?
答案 0 :(得分:4)
Convert.ToString(hexIn,2)
并不总是返回8个字符,它会修剪前导零,因此如果hexIn
为4
,则会返回100
,但不会返回00000100
。
您可能希望将其更改为Convert.ToString(hexIn,2).PadLeft(8, '0');
。
此外,您还需要使用StringBuilder
代替string
ret
变量。
顺便说一下,读取文件来确定它的大小有点浪费。最好使用FileInfo
类来获取文件信息。