내 장치에서 일부 원시 데이터를 읽습니다. 이 데이터에는 IP 주소도 포함되지만 형식은 다릅니다. 아시다시피 IP 주소는 일반적으로 a.b.c.d 형식으로 작성됩니다. 그러나 나는 장치에서 주어진 abcd 형식의 데이터를 가지고 있습니다. 이 형식을 a.b.c.d 형식으로 가져와야합니다. 펄 스크립트에서 어떻게 할 수 있습니까?perl 스크립트에서 문자열의 여러 위치에 특수 문자 추가
감사
내 장치에서 일부 원시 데이터를 읽습니다. 이 데이터에는 IP 주소도 포함되지만 형식은 다릅니다. 아시다시피 IP 주소는 일반적으로 a.b.c.d 형식으로 작성됩니다. 그러나 나는 장치에서 주어진 abcd 형식의 데이터를 가지고 있습니다. 이 형식을 a.b.c.d 형식으로 가져와야합니다. 펄 스크립트에서 어떻게 할 수 있습니까?perl 스크립트에서 문자열의 여러 위치에 특수 문자 추가
감사
를 정말 촬영 방법에 따라 다르지만 대부분의 경우 일부 소스 코드 BTW 좋을와 IP 주소
a\.b\.c\.d
에서 백 슬래시 점을 탈출해야합니다 ...
내 코드는 일종의 정렬입니다 : print $ string; 출력은 c0a80001과 같습니다. c0.a8.00.01을 포함하도록 $ string을 만들고 싶습니다. 어떻게해야합니까? – Daylite
여러 가지가 있습니다. 그러면 하위 문자열이있는 점이 삽입됩니다.
map {substr ($ string, $ _, 0) = '.' } (6,4,2);
아마도 정규 표현식을 선호 할 것입니다.
$ string = ~ s/[0-9a-f] {2} \ K (?! \ Z) /./ g;
첫째, 우리는 두 문자의 문자열로 16 진수 문자열을 분할하자 : 우리는 16 진수 문자열로 각 조각을 치료
... split /..\K/, "c0a80001";
하고 hex
내장과 숫자 값을 얻을 :
... map hex, ...
그런 다음, 우리는 마침표로 모든 숫자에 가입 :
join '.', ...
결합을 :
my $ip = join '.', map hex, split /..\K/, "c0a80001";
print "$ip\n";
출력 : 192.168.0.1
. 이것은 IPv4 주소의 일반적인 텍스트 표현입니다.
['unpack' 기능] (http://perldoc.perl.org/functions/unpack.html)을 사용하여 바이너리 데이터를 Perl 스칼라로 변환 할 수 있습니다. 그게 니가하고 싶은거야? – amon
장치에서 들어오는 IP 주소의 예를 보여주십시오. – Borodin
내 코드는 일종의 정렬입니다 : print $ string; 출력은 c0a80001과 같습니다. c0.a8.00.01을 포함하도록 $ string을 만들고 싶습니다. 어떻게해야합니까? – Daylite