編程示例:表格程序開發的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};
}