PHP에서 문자열을 바이트 배열로
PHPPHP에서 문자열을 바이트 배열로
숫자, 문자 등을 포함 할 수있는 문자열에서 바이트 배열을 가져 오는 방법은 무엇입니까? Java에 익숙하다면 getBytes () 메소드와 동일한 기능을 찾고 있습니다.
이 스 니펫을 다음과 같이 시도했습니다.
for($i = 0; $i < strlen($msg); $i++){
$data.=ord($msg[$i]);
//or $data[]=ord($msg[$1]);
}
그러나 성공이 없으면 어떤 종류의 도움도받을 수 있습니다.
추신 : 나는 왜 이것을 전혀 필요로하지 않습니까? 음, 자바로 작성된 서버에 fputs ()를 통해 바이트 배열을 보내야합니다 ...
해결법
-
==============================
1.@ Paral은 맞습니다.하지만 C #에서 byte []와 같은 바이트 배열을 사용해야합니다. 그것은 Sparr과 같은 솔루션이지만 HEX 대신에 각 문자의 int 프리젠 테이션 (0에서 255까지의 범위)을 기대했습니다. 다음과 같이 할 수 있습니다.
@ Paral은 맞습니다.하지만 C #에서 byte []와 같은 바이트 배열을 사용해야합니다. 그것은 Sparr과 같은 솔루션이지만 HEX 대신에 각 문자의 int 프리젠 테이션 (0에서 255까지의 범위)을 기대했습니다. 다음과 같이 할 수 있습니다.
$byte_array = unpack('C*', 'The quick fox jumped over the lazy brown dog'); var_dump($byte_array); // $byte_array should be int[] which can be converted // to byte[] in C# since values are range of 0 - 255
var_dump를 사용하면 요소가 int (문자열이 아님)임을 알 수 있습니다.
array(44) { [1]=> int(84) [2]=> int(104) [3]=> int(101) [4]=> int(32) [5]=> int(113) [6]=> int(117) [7]=> int(105) [8]=> int(99) [9]=> int(107) [10]=> int(32) [11]=> int(102) [12]=> int(111) [13]=> int(120) [14]=> int(32) [15]=> int(106) [16]=> int(117) [17]=> int(109) [18]=> int(112) [19]=> int(101) [20]=> int(100) [21]=> int(32) [22]=> int(111) [23]=> int(118) [24]=> int(101) [25]=> int(114) [26]=> int(32) [27]=> int(116) [28]=> int(104) [29]=> int(101) [30]=> int(32) [31]=> int(108) [32]=> int(97) [33]=> int(122) [34]=> int(121) [35]=> int(32) [36]=> int(98) [37]=> int(114) [38]=> int(111) [39]=> int(119) [40]=> int(110) [41]=> int(32) [42]=> int(100) [43]=> int(111) [44]=> int(103) }
-
==============================
2.
print_r(unpack("H*","The quick fox jumped over the lazy brown dog")) Array ( [1] => 54686520717569636b20666f78206a756d706564206f76657220746865206c617a792062726f776e20646f67 )
T = 0x54, h = 0x68, ...
필요한 경우 결과를 2 개의 16 진 문자 청크로 나눌 수 있습니다.
-
==============================
3.당신은 이것을 시도 할 수 있습니다 :
당신은 이것을 시도 할 수 있습니다 :
$in_str = 'this is a test'; $hex_ary = array(); foreach (str_split($in_str) as $chr) { $hex_ary[] = sprintf("%02X", ord($chr)); } echo implode(' ',$hex_ary);
-
==============================
4.PHP에서 문자열은 bytestreams입니다. 너 정확히 뭘 하려구?
PHP에서 문자열은 bytestreams입니다. 너 정확히 뭘 하려구?
다시 : 편집
fputs는 문자열을 인수로 사용합니다. 대부분의 경우 문자열을 전달해야합니다. 자바 측에서는 PHP에서 사용하는 인코딩에 상관없이 데이터를 디코딩해야합니다 (기본값은 iso-8859-1).
-
==============================
5.PHP에는 명시 적 바이트 유형이 없지만 해당 문자열은 이미 Java의 바이트 배열과 동일합니다. fputs ($ connection, "The quick brown fox ...")를 안전하게 작성할 수 있습니다. 당신이 알아야 할 유일한 것은 문자 인코딩입니다, 그들은 양쪽에서 동일해야합니다. 의심스러운 경우 mb_convert_encoding ()을 사용하십시오.
PHP에는 명시 적 바이트 유형이 없지만 해당 문자열은 이미 Java의 바이트 배열과 동일합니다. fputs ($ connection, "The quick brown fox ...")를 안전하게 작성할 수 있습니다. 당신이 알아야 할 유일한 것은 문자 인코딩입니다, 그들은 양쪽에서 동일해야합니다. 의심스러운 경우 mb_convert_encoding ()을 사용하십시오.
-
==============================
6.http://tw1.php.net/unpack에 정의 된 여러 함수가 매우 유용하다는 것을 알았습니다. 문자열을 바이트 배열로 또는 그 반대로 변환 할 수 있습니다.
http://tw1.php.net/unpack에 정의 된 여러 함수가 매우 유용하다는 것을 알았습니다. 문자열을 바이트 배열로 또는 그 반대로 변환 할 수 있습니다.
byteStr2byteArray ()를 예로 들어 보겠습니다.
<?php function byteStr2byteArray($s) { return array_slice(unpack("C*", "\0".$s), 1); } $msg = "abcdefghijk"; $byte_array = byteStr2byteArray($msg); for($i=0;$i<count($byte_array);$i++) { printf("0x%02x ", $byte_array[$i]); } ?>
from https://stackoverflow.com/questions/885597/string-to-byte-array-in-php by cc-by-sa and MIT license
'PHP' 카테고리의 다른 글
기본 PHP 및 AJAX (0) | 2018.09.19 |
---|---|
URL에서 index.php 제거 - Codeigniter 2 (0) | 2018.09.19 |
PHP 기본 인코딩을 utf-8로 설정 하시겠습니까? (0) | 2018.09.19 |
PHP에서 객체의 보호 된 속성을 얻는 방법 (0) | 2018.09.19 |
PHP : 1D 배열의 모든 가능한 조합을 얻는 방법? [복제] (0) | 2018.09.19 |