2012-05-12 3 views
1

Perl의 바이트가 0xFF로 설정되었는지 확인하고 싶습니다.Perl에서 바이트가 0xFF인지 확인하십시오.

unpack('C', $byte) == 255 

을하지만이 일을 올바른 또는 가장 효율적인 방법이 될 수없는 것처럼 보인다 :

지금은 그것을 확인하기 위해이 작업을 수행 할 수 있습니다. 더 빠를 수 있는지를 확인하기위한 속기 표기법이 있습니까?

+0

단일 8 비트 바이트입니다. 바이너리에서 바이트 자체는 11111111입니다. – GoldenNewby

+0

나는 아주 혼란 ​​스럽다. $ byte의 데이터는 클라이언트 연결에서 나에게 보낸 바이트입니다. 그 연결은 저 바이트 안에 아무것도를 보낼 수 있었다. 프로토콜에 바이트에 대한 특정 값이 메시지를 끝내기 때문에 해당 바이트가 0xFF인지 확인하고 싶습니다. $ byte라는 이름을 지정하는 것보다 변수가 단일 바이트를 포함하는 것을 더 잘 나타내는 방법을 모르겠습니다. $ byte에 무엇이 있는지 정확하게 보여줄 수있는 방법을 보여 주시겠습니까? – GoldenNewby

+1

바이트 란 무엇입니까? 네가 가진 것을 어떻게 알 수 있니? 어디서 구 했니? Perl은 "바이트"가 아닌 코드 포인트 만 검사 할 수 있습니다. 왜냐하면 그 개념은 이해가되지 않기 때문입니다. 당신은 성격이 있습니다. 코드 포인트가 0x100 미만이면 눈에 바이트가됩니까? 흠. 나는'sysread'를': raw' 파일 핸들에서 길이 1로 호출하면 바이트를 얻을 수 있다고 생각합니다. 물어볼 질문에 대해서도 정신 모형의 실패가 있습니다. – tchrist

답변

8

간단한 설명은?

if ($byte eq "\xff") { ... } 
+0

Perl이 문자열을 해석하는 것을 포함하지 않는 방법이 있기를 바랬습니다. 나는 이것이 아마도 포장을 푸는 것보다 느린 것 같은 느낌이 들지만 나는 점검 할 것이다. – GoldenNewby

+5

@ GoldenNewby : 이것은 당신이 묻는 것을하는 올바른 방법입니다. 나는 *를 해석함으로써 당신이 의미하는 바를 알지 못합니다. 이 코드는 두 개의 한 문자 스트링을 비교하여 간단하게 비교합니다. – Borodin

+1

@ 보로딘 : 고마워. 그것은 너무 늦었습니다 ;-) –

관련 문제