最近要做个十进制数字的可逆转换做邀请码,一直没搞清楚怎么弄的,实在太复杂了,今天弄IP时想到这个可以进行转换,于是研究了下原理:
主要是自己整理了下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
$ip =
'12.34.56.78'
;
$ips = explode(
'.'
, $ip);
$result =
0
;
$result += $ips[
0
]<<
24
;
$result += $ips[
1
]<<
16
;
$result += $ips[
2
]<<
8
;
$result += $ips[
3
];
echo bindec(decbin($result));
echo
'<br>'
;
echo bindec(decbin(ip2long($ip)));
echo
'<br>'
;
$str =
''
;
$str .= intval($result/intval(pow(
2
,
24
))) .
'.'
;
$str .= intval(($result&
0x00FFFFFF
)/intval(pow(
2
,
16
))) .
'.'
;
$str .= intval(($result&
0x0000FFFF
)/intval(pow(
2
,
8
))) .
'.'
;
$str .= intval($result&
0x000000FF
);
echo $str;
echo
'<br>'
;
echo long2ip($result);
|
以上输出的结果为:
1
2
3
4
|
203569230
203569230
12.34
.
56.78
12.34
.
56.78
|
这只是实现的一种方法而已,还有其他的办法
我是想用类似的方法,可以直接把一个十进制数字转换为其他十进制数值并可逆,但遇到中间有很多0的数值时发现问题太多了,如 1000100
www。s1979。com/ys/msyw/20140704/1193667。html
www。qdxw。com。cn/yx/yybd/4191638。html
www。sxycrb。com/yy/ys/3663308。html