2009-04-10 2 views
2

PHP로 시리얼 포트 (r232)에 무엇인가 보내려고합니다. 이 클래스를 사용하고 있습니다 : http://www.phpclasses.org/browse/package/3679.htmlPHP에서 비 ASCII 문자?

문제는 1 바이트 만 보낼 수 있다는 것입니다. 그러나 "1"과 같은 것을 보내면 실제로 49 (ASCII는 1)를 보냅니다. send ("1") 대신 send (1)를 시도했지만 2 바이트 정수가 있기 때문에 좋지 않습니다. ASCII 문자가 아닌 "실제"문자를 보내는 방법이 있습니까?

+0

필자는 PHP가이 언어를 지원하지 못할 수도 있다는 느낌을 받았지만, 조금 연구를 해본 결과 아무것도 나오지 않았습니다. – Ross

+0

"실제 문자"가 없습니다. 컴퓨터는 "A", "B"또는 "C"가 아니라 0과 1 만 이해합니다. ([Joel Spolskys 멋지 긴하지만 길다는 유니 코드 기사] (http://www.joelonsoftware.com/articles/Unicode.html)의 첫 번째 부분을 읽어보십시오. 문자 세트에 대해 자세히 설명합니다.) –

답변

4

함수는 해당 ascii 문자에 대해 정수로 주어진 문자를 반환합니다.

+0

문자가 아니라 PHP 문자열입니다. 그건 OP에 도움이되지 않을거야 –

+0

라이브러리가 PHP 문자열을 가져 가지 않습니까? ... – Mark

+0

더 정확하게 말하면 :'chr'은 정수를 바이트로 변환합니다. – Gumbo

0

라이브러리가 문자를 입력으로 기대하고있는 것처럼 보입니다. 0x01으로 인코딩 할 문자를 보내야하는 경우 "\ 001"을 보내면됩니다. chr() 함수는 문자를 정수 값으로 변환하며 여기서는 사용하지 않습니다.

한 가지 더 : 정수의 바이트 크기는 기본 시스템에 따라 다르며 대부분 4 바이트입니다.

+0

그렇지 않습니다. ord()는 문자를 정수 값으로 변환하고, chr()은 그 반대입니다. – Mark

0

나는 당신이 성취하려고하는 것이 확실하지 않습니다. 정수 1을 보내려고하십니까? 클래스에 익숙하지 않은 경우, 값 1을 인수로 사용하려고 시도 했습니까? 그래도 작동하지 않으면 chr() 기능으로 포장하십시오.