这个和之前那篇文章的实现思路相似,没有用php的位运算,效率会低些,算是完整的反映了转换规则, 基本上就是:格雷码 转成 二进制码 转成 十进制码
function gary_to_decimal($gray){ $gray = str_split((string)$gray); $decimal = ''; $prev = 0; foreach($gray as $k=>$v){ if($k == 0){ $decimal .= $prev = $v; }else{ $decimal .= $prev = (int)$v ^ $prev; } } //将获得的二进制码转换成十进制码 return bindec($decimal); }