<?php define('PATTERN_MODE_INT', 1); define('PATTERN_MODE_STRING', 2); function bitToArray($data, $ruleArr, $mode = PATTERN_MODE_INT) { $varData = array(); if ($mode == PATTERN_MODE_INT) { $usedBit = 0; for ($i = 0; $i < Count($ruleArr); $i++) { if ($ruleArr[$i] <= 0) continue; $turnData = pow(2, $ruleArr[$i]) - 1 << $usedBit & $data; $varData[$i] = $turnData >> $usedBit; $usedBit+= $ruleArr[$i]; } } else { for ($i = 0, $cnt = Count($ruleArr); $i < $cnt; $i++) { $varData[$i] = substr($data, $i, $ruleArr[$i]); } } return $varData; } function arrayToBit($data, $ruleArr, $mode = PATTERN_MODE_INT) { $rslt = ''; if ($mode == PATTERN_MODE_INT) { $usedBit = 0; $rslt = 0; for ($i = 0; $i < Count($ruleArr); $i++) { if ($ruleArr[$i] <= 0) continue; if (!$data[$i]) $data[$i] = 0; $rslt|= $data[$i] << $usedBit; $usedBit+= $ruleArr[$i]; } } else { for ($i = 0, $cnt = Count($ruleArr); $i < $cnt; $i++) { $rslt.= sprintf('%0' . $ruleArr[$i] . 's', $data[$i]); } } return $rslt; }
永久地址:
转载随意~请带上教程地址吧^^