计算未分配分区扇区起始位置大小 工作记录

总大小 / 512 = 总扇区号   整个磁盘
500107862016 / 512 = 976773168  总扇区号

已知两个条件 分区大小(分区数据[4])  分区扇区起始位置[7]                                                   
E: 149327183360 / 512 = 291654655 + 2048 = 291656703 
分区大小 / 512 = 扇区结束位置 + 起始扇区  = 下一个分区扇区的起始位置 

291656703 - 307406848 = 15750145 *512 = 8064074240
当前扇区起始位置 - 下一个起始位置 = 总扇区数 * 512 = 总大小

F: 215811620864 /512 = 421507072  + 553166848 = 974673920  //起始扇区位置
磁盘总扇区 - 最后一个扇区起始位置 = 未分区当前总扇区 *512 = 分区总大小
最后一步 976773168 - 974673920 = 2099248 * 512 = 1074814976

if(下一个分区扇区的起始位置 == 数据里面的扇区起始位置)
{
    return 没有未分配的;
}
else  
{
    1.307406848  下一个扇区的起诉位置 
    2.125829120000  分区大小 D
    3.下一个分区扇区的起始位置
    4.未分区扇区起始位置 295752703
    
    本身分区大小 / 512 = 扇区结束位置 + 本身起始扇区  = 下一个分区扇区的起始位置 295752703
    
    分区大小 / 512 = 245760000  D分区总扇区  没有作用
    
    //需要下一个分区扇区位置 - 未分区的起始扇区
    307406848 - 295752703 = 11654145  未分区的总扇区
    11654145 * 512 = 5966922240 未分区的总大小
}


//测试添加一个未分配的数组进去
function AddUnallocatedArray2(DataArr)
{
    var i,j ,k;
    var Initial = 0;
    var AllSizeB = 0;
    var Integration = [];
    stdout.println("-----"+PushArrData);
    stdout.println("-----"+ArrayIndex);
    for( i =0;i<DataArr.length;i++)
    {
        var Two = DataArr[i][5];
        var DiskAllSize = FileSizeToLongLong(DataArr[i][4]) / 512;  //总大小除以512得到总扇区的整数
        Integration = [];
         stdout.println("Two Two = "+Two.length);
        for( j=0;j<Two.length;j++) 
        {
         
            Two[j][4];  //分区大小
            Two[j][7];  //扇区起始位置
            
            Initial = (FileSizeToLongLong(Two[j][4]) / 512) + FileSizeToLongLong(Two[j][7]);
             stdout.println("Initial 下一个扇区起始位置 = "+Initial);
            if(Initial != 0)
            {
                Integration.push(Two[j]);
                stdout.println("第一步 先计算出来的扇区起始位置 Initial= "+Initial);
                if(Initial == FileSizeToLongLong(Two[j][7]))
                {
                    stdout.println("第二步判断如果扇区位置一样 不需要操作"+Two[j]);
                    Initial = 0;
                    continue;
                }
                
                var GetNextSize = 0;
                
                if(j == 0)
                {
                    GetNextSize = FileSizeToLongLong(Two[j+1][7]);
                    stdout.println("-----第一次拿下一个起始扇区 1 J+1= "+GetNextSize);
                }
            
                if(j < (Two.length-1))
                {
                    GetNextSize = FileSizeToLongLong(Two[j+1][7]);
                    
                    stdout.println("-----第二次拿下一个起始扇区  1 J+1= "+GetNextSize);
                }
                if(j == Two.length-1)
                {
                    GetNextSize = FileSizeToLongLong(DataArr[i][4]) / 512;
                }
                
                stdout.println("----- 2 GetNextSize= "+GetNextSize);
                AllSizeB = (GetNextSize - Initial) * 512;
                
                stdout.println("第三步--------扇区位置不一样 属于未分配,拿到大小 AllSizeB= "+AllSizeB 
                    +",拿到起始扇区 Initial= "+Initial);
                //stdout.println("-------扇区位置不一样"+Two[j]);
                    //再当前这个数组的前面插进去数据条
                var vValue=["*:\\",0,0,0,Math.abs(AllSizeB),Math.abs(AllSizeB),0,Initial,0,0,0,0,0];
                
                /*vValue[0] = "*:\\" ;
                vValue[1] =  0;
                vValue[2] =  0;
                vValue[3] =  0;
                vValue[4] =  Math.abs(AllSizeB) ;
                vValue[5] =  Math.abs(AllSizeB);
                vValue[6] =  0;
                vValue[7] =  Initial;
                vValue[8] =  0;
                vValue[9] =  0;
                vValue[10] = 0;
                vValue[11] = 0;
                vValue[12] = 0;*/
                
                Integration.push(vValue);

                
                Initial = 0;
            }         
        
        }
         
        stdout.println("计算好的未分区位置 Integration= "+Integration);
         
        if(Integration.length < 0)
        {
            continue;
        }
        DataArr[i][5] = [];
        for(k=0;k<Integration.length;k++)
        {
        //    stdout.println("Integration[k] = "+Integration[k].length);
            DataArr[i][5].push(Integration[k]);
        }
 
    }
    
    stdout.println("-------组合完成 = "+DataArr);
    return DataArr;
}
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值