編程示例:表格程序開發的EXCEL方法,以二維碼的數據容量計算爲例

編程示例:表格程序開發的EXCEL方法,以二維碼的數據容量計算爲例

在二維碼的計算中,它的第一個表格是以版本號爲參數,計算該版本下的數據容量。
表1如下:


在EXCEL中以公式的形式生成與上圖一致的表格。其中會加入一定量的輔助列。
f25,G25,H25,I25直到N25的格子的公式如下:
=E25*4+17
=E25*8+194
=(E25-MOD(E25,7))/7
=IF(E25=1,0,IF(E25>6,(H25+1)*(H25+1)*25+H25*40,25))
=G25+I25
=IF(E25<7,31,67)
=F25*F25-J25-K25
=(L25-MOD(L25,8))/8
=MOD(L25,8)

EXCEL生成的表格如下:它要與二維碼的表格各個列生成一致的數值。

然後把上述的公式轉化成javascript代碼,寫出了計算數量容量的代碼如下:
//var version_number=1;   calc_data_volume(1)   return  {"volume":26,"remainder":0}
function calc_data_volume(ver)
{
    var count_edge=ver*4+17;
    var find_pos_line=ver*8+194;
    var div_result=(ver-ver%7) /7;
    var find_pos_block=0;
    var count_function_module=0;
    var count_ver_and_formal=0;
    var count_data_module=0;
    var data_volume=0;
    var bit_remainder=0;

    if(ver>6)
        {find_pos_block=(ver+1)*(ver+1)+25+ver*40;}
    else if(ver>0)
        {find_pos_block=25;}
    else
        {find_pos_block=0;}

    count_function_module=find_pos_line+count_function_module;

   if(ver>6)
      {count_ver_and_formal=67;}
   else
      {count_ver_and_formal=31;}
   count_data_module=count_edge*count_edge-count_function_module-count_ver_and_formal;
   bit_remainder=count_data_module%8;
   data_volume=(count_data_module-bit_remainder)/8;

   return {"volume":data_volume,"remainder":bit_remainder};
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章