C# 查找以位为单位的文件大小

C# 查找以位为单位的文件大小,c#,C#,我需要确切的文件大小 是否仍然可以找到以位(而不是字节)为单位的文件大小 我不想找到System.IO.FileInfo.Length并将其转换为位。因为这会丢失一个字节的信息。那么,使用FileInfo.Length并乘以8是以位计算文件大小的最自然的方法。它的长度不是8位的倍数: long length = new FileInfo(fileName).Length * 8; 如果你想变得花哨,你可以将其左移: long length = new FileInfo(fileName).Le

我需要确切的文件大小

是否仍然可以找到以位(而不是字节)为单位的文件大小


我不想找到System.IO.FileInfo.Length并将其转换为位。因为这会丢失一个字节的信息。

那么,使用
FileInfo.Length
并乘以8是以位计算文件大小的最自然的方法。它的长度不是8位的倍数:

long length = new FileInfo(fileName).Length * 8;
如果你想变得花哨,你可以将其左移:

long length = new FileInfo(fileName).Length << 3;
long length=new FileInfo(fileName)。长度8位字节:

int numOfBits = myFileInfo.Length * 8;
你为什么觉得这是个问题

如果你不喜欢这个神奇的数字:

public const int BitsInByte = 8;
int numOfBits = myFileInfo.Length * BitsInByte;
(据我所知,在任何操作系统中)都不可能有大小不是一个字节倍数的文件。换句话说,文件不可能有“3字节2位”这样的大小。这就是为什么所有检索文件长度的功能都以字节为单位返回它。您可以将其与8相乘,得到位数:

long lengthInBits = new FileInfo(fileName).Length * 8;

为什么不
myFileInfo.Length*8
?您对
FileInfo.Length
属性有何异议?为什么需要以位表示,为什么不能将长度转换为位?这里似乎有一个隐藏的问题。你说它丢失了一个字节的信息。这是什么意思?您是否正在尝试修复应用程序中的错误?我认为Ata有一个错误的印象,即以字节为单位的文件大小被“四舍五入”为最接近的字节,并且位将更准确。我认为您在这个问题的原因上一针见血。