微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ActionScript代码将字节转换为kb,mb,gb等

如何解决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 举报,一经查实,本站将立刻删除。