如何解决ActionScript代码将字节转换为kb,mb,gb等
| 我有一个实用程序功能,可以像Windows资源管理器一样以适当的形式显示文件大小,即将其转换为最接近的KB,MB,GB等。我想知道我编写的代码是否正确,以及是否可以使其更简单。 我写的功能如下:public static function formatFileSize(bytes:int):String
{
if(bytes < 1024)
return bytes + \" bytes\";
else
{
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Kb\";
else
{
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Mb\";
else
{
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Gb\";
}
}
}
return String(bytes);
}
尽管目前它为我完成了工作,但我认为它可以以更简单的方式编写,甚至可以进行优化。
提前致谢
解决方法
这是一种更简单的方法:
private var _levels:Array = [\'bytes\',\'Kb\',\'MB\',\'GB\',\'TB\',\'PB\',\'EB\',\'ZB\',\'YB\'];
private function bytesToString(bytes:Number):String
{
var index:uint = Math.floor(Math.log(bytes)/Math.log(1024));
return (bytes/Math.pow(1024,index)).toFixed(2) + this._levels[index];
}
为了完整起见,我将其添加到了yottabytes :)
,@J_A_X是执行此操作的最佳方法,但是对于将来,我建议您在发现像嵌套嵌套if...else...if
语句时尽早返回。
public static function formatFileSize(bytes:int):String
{
if(bytes < 1024)
return bytes + \" bytes\";
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Kb\";
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Mb\";
bytes /= 1024;
if(bytes < 1024)
return bytes + \" Gb\";
return String(bytes);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。