배쉬-46
내용의 테이블
당신은 다른 골프 버전을 찾을 수 있습니다 :
echo $[_=32,`printf "%d<<(_-=8)|" ${1//./ }`0] # 46chr
set -- ${1//./ };echo $[$1<<24|$2<<16|$3<<8|$4] # 47chr
v=('|%d<<'{24,16,8,0});printf -vv "${v[*]}" ${1//./ };echo $[0$v] # 65chr
mapfile -td. i<<<$1;for((a=o=0;a<4;o+=i[a]<<(3-a++)*8)){ :;};echo $o # 68chr
새로운 버전! 2018-11-15 더 골프, 46 문자
echo $[_=32,`printf "%d<<(_-=8)|" ${1//./ }`0]
설명
- 나는
$_
더 많은 골프를 쳤다.
- 구문
${1//./ }
은 모든 점 .
을 공백으로 대체 합니다
.
- 그래서
printf
뭔가를 렌더링합니다192<<(_-=8)|168<<(_-=8)|1<<(_-=8)|1<<(_-=8)|
- 우리는 추가됩니다
0
지난 후 또는 |
및
- 사전
_
에 32 . bash는 그래서, 왼쪽에서 오른쪽으로 구조를 읽을 $((_-=8))
수 있도록 24
1에서 이동 , 16
두 번째에, 등등.
행동 :
set -- 192.168.1.1
echo $[_=32,`printf "%d<<(_-=8)|" ${1//./ }`0]
3232235777
재미를 위해 $_
:이 후 콘텐츠 를 얻으려고 노력 하십시오.
echo $_
3232235777
;-비
set -- 192.168.1.1
echo $_ $[_=32,`printf "%d<<(_-=8)|" ${1//./ }`0] $_
192.168.1.1 3232235777 0
그래, 맞아 32 - 4 x 8 = 0
함수에서 :
ip2int() {
echo $[_=32,`printf "%d<<(_-=8)|" ${1//./ }`0]
}
ip2int 192.168.1.1
3232235777
ip2int 255.255.255.255
4294967295
ip2int 0.0.0.0
0
또는 루프로 :-> 60
ip2int() {
for i;do
echo $[_=32,`printf "%d<<(_-=8)|" ${i//./ }`0]
done
}
ip2int 192.168.1.1 10.10.104.36 8.8.8.8 1.1.1.1 255.255.255.255 0.0.0.0
3232235777
168454180
134744072
16843009
4294967295
0
배쉬 (v4.1 +) : 47
첫 번째 게시물
set -- ${1//./ };echo $[$1<<24|$2<<16|$3<<8|$4]
설명:
- 구문
${1//./ }
은 모든 점 .
을 공백으로 대체 합니다
.
set --
위치 매개 변수 설정 ( $@=($1 $2 $3...)
)
- 그래서
set -- ${1//./ }
분할합니다 $1
점과 세트로 $1
, $2
, $3
및 $4
문자열 containg 경우 3
점 (공백없이).
행동 :
set -- 192.168.1.1
set -- ${1//./ };echo $[$1<<24|$2<<16|$3<<8|$4]
3232235777
또는 기능 :
ip2int() {
set -- ${1//./ }
echo $[$1<<24|$2<<16|$3<<8|$4]
}
ip2int 192.168.1.1
3232235777
ip2int 0.0.0.0
0
또는 루프로 :-> 61
for i;do set -- ${i//./ };echo $[$1<<24|$2<<16|$3<<8|$4];done
행동 :
ip2int() {
for i;do
set -- ${i//./ }
echo $[$1<<24|$2<<16|$3<<8|$4]
done
}
ip2int 192.168.1.1 10.10.104.36 8.8.8.8 1.1.1.1 0.0.0.0
3232235777
168454180
134744072
16843009
0
다른 버전의 골프 : 65
v=('|%d<<'{24,16,8,0});printf -vv "${v[*]}" ${1//./ };echo $[0$v]
견본:
ip2int() {
v=('|%d<<'{24,16,8,0});printf -vv "${v[*]}" ${1//./ };echo $[0$v]
}
ip2int 255.255.255.255
4294967295
ip2int 10.10.104.36
168454180
루프 (+14)에서 : 82
ip2int() {
for i;do
v=('|%d<<'{24,16,8,0})
printf -vv "${v[*]}" ${1//./ }
echo $[0$v]
done
}
* 또는 조금 더 추한 : 70 *
v=('|%d<<'{24,16,8});printf -vv "${v[*]}" ${1//./ };echo $[0${v%<<2*}]
경우 printf
처럼 일부 문자열을주고 |192<<24 |168<<16 |1<<8|1<<24 |0<<16 |0<<8
우리가 마침내 컷에 있습니다 <<2...
.
와 골프 mapfile
, 더 이상 : 68
ip2int() {
mapfile -td. i<<<$1;for((a=o=0;a<4;o+=i[a]<<(3-a++)*8)){ :;};echo $o
}
또는 루프 포함 : 82
ip2int() {
for a;do
mapfile -td. i<<<$a;for((a=o=0;a<4;o+=i[a]<<(3-a++)*8)){ :;};echo $o
done
}