初始化 2个 重要的 double值, A = 1, B = 0 //即[初始区间]为 0 - 1 ?
//--------------------//
循环开始(压缩开始), 对 [原数据 - SrcData] 进行 "逐字节" 地处理。
假设, SrcData[0] 是 74h, 那么:
X = 74h 在[表]中的偏移值。(如, 由于是第0字节, [表]还是初始状态, 所以 X = 75h, 注意 [表] 在后面还会变动! 下面会描述)
Y = (74h + 1) 在[表]中的偏移值。(接上例, Y = 76h)
//--------------------//
计算那2个 double值: //计算 区间值 ?
double dbVal = (A - B) / 表的当前长度; (注意表是变动的, 长度也会变动, 下面会描述) A = B + (dbVal * Y); //接上例, A = 0.45736434108527130 B = B + (dbVal * X); //接上例, B = 0.45348837209302323 //也就是说,对 X 定义的区间值为 [A - B] ???
将这2个double值转换到 '二进制' 的表示形式,则:
A = 0.011101010001010111010100010101110101000101011101010001
B = 0.011101000001011111010000010111110100000101111101000001