sc0*_*tbr 2 data-conversion c#-4.0
该文件大约是24mb,并且它保存在DataBase中,所以我将它转换为位数组然后,经过多次建议后,我使用了bitconverter.tosingle(,),这给了我不好的结果,这是我的代码:
byte[] imgData = prod.ImageData;
float myFloat = BitConverter.ToSingle(imgData, 0);
float mb = (myFloat / 1024f) / 1024f;
Run Code Online (Sandbox Code Playgroud)
当我调试时,我得到这些结果:
字节[24786273]
myFloat = 12564.0361
mb = 0.0119819986
奇怪的是,数组的大小与文件的大小完全相同.如何正确地将其转换为浮动然后显示为mb?
编辑:我尝试将myFloat设置为imgData.Length,然后大小是正确的,但是这是一个正确的方法,并且它会在未来导致更大的值的问题?
Bas*_*Bas 10
您将从图像中取出前四个字节并将其转换为IEEE浮点.我不是图像文件的专家,所以我不确定前四个字节是否总是长度,即使是这种情况仍然不正确(参见规范).但是,通过数组的长度已经知道文件的长度,因此获得大小的更简单方法是:
byte[] imgData = prod.ImageData;
float mb = (imgData.Length / 1024f) / 1024f;
Run Code Online (Sandbox Code Playgroud)
为了解决您的问题:这仍然适用于大型文件,请考虑24TB示例.
var bytes = 24L * 1024 * 1024 * 1024 * 1024;
var inMb = (bytes / 1024.0F / 1024.0F);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4574 次 |
| 最近记录: |