Hướng dẫn php convert string to bytes - php chuyển đổi chuỗi thành byte

Làm thế nào tôi có thể lấy mảng byte từ một số chuỗi có thể chứa số, chữ cái, v.v. Nếu bạn quen thuộc với Java, tôi đang tìm kiếm cùng một chức năng của phương thức getBytes ().

Tôi đã thử một đoạn trích như thế này:

for($i = 0; $i < strlen($msg); $i++){
    $data.=ord($msg[$i]);
        //or $data[]=ord($msg[$1]); 
}

Nhưng không thành công, vì vậy bất kỳ loại trợ giúp sẽ được đánh giá cao.

Tái bút: Tại sao tôi cần điều này ở tất cả !? Chà, tôi cần gửi mảng byte qua fputs () đến một máy chủ được viết bằng java ...

Hướng dẫn php convert string to bytes - php chuyển đổi chuỗi thành byte

Dokaspar

7.73714 Huy hiệu vàng68 Huy hiệu bạc93 Huy hiệu Đồng14 gold badges68 silver badges93 bronze badges

Đã hỏi ngày 19 tháng 5 năm 2009 lúc 23:49May 19, 2009 at 23:49

@Sparr là đúng, nhưng tôi đoán bạn mong đợi mảng byte như byte[] trong C#. Đó là giải pháp tương tự như Sparr đã làm nhưng thay vì Hex, bạn mong đợi bản trình bày int (dao động từ 0 đến 255) của mỗi char. Bạn có thể làm như sau:

$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

Bằng cách sử dụng var_dump, bạn có thể thấy rằng các yếu tố là int (không phải

$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
1).

   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) }

Hãy cẩn thận: Mảng đầu ra có chỉ số dựa trên 1 (như nó đã được chỉ ra trong bình luận)

Đã trả lời ngày 13 tháng 7 năm 2012 lúc 8:22Jul 13, 2012 at 8:22

BronekbronekBronek

10,4K2 Huy hiệu vàng43 Huy hiệu bạc46 Huy hiệu đồng2 gold badges43 silver badges46 bronze badges

2

print_r(unpack("H*","The quick fox jumped over the lazy brown dog"))

Array ( [1] => 54686520717569636b20666f78206a756d706564206f76657220746865206c617a792062726f776e20646f67 ) 

T = 0x54, h = 0x68, ...

Bạn có thể phân chia kết quả thành các khối nhân vật hai giờ nếu cần thiết.

Đã trả lời ngày 20 tháng 5 năm 2009 lúc 0:29May 20, 2009 at 0:29

SparrsparrSparr

7.38530 Huy hiệu bạc47 Huy hiệu đồng30 silver badges47 bronze badges

7

PHP không có loại

$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
2 rõ ràng, nhưng
$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
1 của nó đã tương đương với mảng byte của Java. Bạn có thể viết
$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
4 một cách an toàn. Điều duy nhất bạn phải nhận thức được là mã hóa nhân vật, chúng phải giống nhau ở cả hai phía. Sử dụng mb_convert_encoding () khi nghi ngờ.

Đã trả lời ngày 13 tháng 7 năm 2011 lúc 11:48Jul 13, 2011 at 11:48

Hướng dẫn php convert string to bytes - php chuyển đổi chuỗi thành byte

Soulmergesoulmergesoulmerge

72.2K19 Huy hiệu vàng117 Huy hiệu bạc152 Huy hiệu đồng19 gold badges117 silver badges152 bronze badges

0

Bạn có thể thử điều này:

$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);

Đã trả lời ngày 19 tháng 5 năm 2009 lúc 23:59May 19, 2009 at 23:59

Hướng dẫn php convert string to bytes - php chuyển đổi chuỗi thành byte

karim79karim79karim79

337K67 Huy hiệu vàng411 Huy hiệu bạc405 Huy hiệu Đồng67 gold badges411 silver badges405 bronze badges

Trong PHP, chuỗi là byteams. Chính xác những gì bạn đang cố gắng để làm?

Re: Chỉnh sửa

PS. Tại sao tôi cần điều này ở tất cả !? Tôi cần gửi qua fputs () bytearray đến máy chủ được viết bằng java ...

$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
5 lấy một chuỗi làm đối số. Nhiều khả năng, bạn chỉ cần chuyển chuỗi của mình cho nó. Về phía Java của mọi thứ, bạn nên giải mã dữ liệu trong bất kỳ mã hóa nào, bạn đang sử dụng trong PHP (mặc định là ISO-8859-1).

Đã trả lời ngày 24 tháng 6 năm 2009 lúc 20:30Jun 24, 2009 at 20:30

Hướng dẫn php convert string to bytes - php chuyển đổi chuỗi thành byte

Troelskntroelskntroelskn

Huy hiệu vàng 113K2626 gold badges132 silver badges154 bronze badges

0

Tôi tìm thấy một số chức năng được xác định trong http://tw1.php.net/unpack rất hữu ích. Họ có thể che giấu chuỗi vào mảng byte và ngược lại.
They can covert string to byte array and vice versa.

Lấy bytestr2ByteArray () làm ví dụ:


Đã trả lời ngày 13 tháng 2 năm 2014 lúc 5:53Feb 13, 2014 at 5:53

1

Chúng ta có thể chuyển đổi chuỗi thành byte không?

Chúng ta có thể sử dụng phương thức chuỗi getBytes () để mã hóa chuỗi thành chuỗi byte bằng cách sử dụng ký tự mặc định của nền tảng.Phương pháp này bị quá tải và chúng ta cũng có thể vượt qua Charset làm đối số.Dưới đây là một chương trình đơn giản cho thấy cách chuyển đổi chuỗi thành mảng byte trong java.use String class getBytes() method to encode the string into a sequence of bytes using the platform's default charset. This method is overloaded and we can also pass Charset as argument. Here is a simple program showing how to convert String to byte array in java.

PHP unpack là gì?

Định nghĩa và cách sử dụng.Hàm giải nén () Giải nén dữ liệu từ chuỗi nhị phân.unpacks data from a binary string.