array - php unpack float




Chaîne à byte array en php (4)

@Sparr a raison, mais je suppose que vous attendiez un tableau byte[] comme byte[] en C #. C'est la même solution que Sparr, mais au lieu de HEX, vous int présentation int ( comprise entre 0 et 255 ) de chaque caractère. Vous pouvez faire comme suit:

$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

En utilisant var_dump vous pouvez voir que les éléments sont int ( pas de string ).

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

Comment puis-je obtenir le tableau d'octets d'une chaîne qui peut contenir des nombres, des lettres et ainsi de suite? Si vous êtes familier avec Java, je suis à la recherche de la même fonctionnalité de la méthode getBytes ().

J'ai essayé un extrait comme celui-ci:

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

mais sans succès, tout type d'aide sera apprécié.

PS: Pourquoi ai-je besoin de tout ça? Eh bien, j'ai besoin d'envoyer un tableau d'octets via fputs () à un serveur écrit en Java ...


En PHP, les chaînes sont des bytestreams. Qu'est-ce que vous essayez de faire exactement?

Re: éditer

Ps. Pourquoi ai-je besoin de tout ça? Eh bien j'ai besoin d'envoyer via fputs () bytearray au serveur écrit en java ...

fputs prend une chaîne comme argument. Très probablement, vous avez juste besoin de passer votre chaîne à elle. Du côté Java, vous devriez décoder les données quel que soit l'encodage que vous utilisez en php (la valeur par défaut est iso-8859-1).


PHP n'a pas de type d' byte explicite, mais sa string est déjà l'équivalent du tableau d'octets de Java. Vous pouvez écrire en toute sécurité fputs($connection, "The quick brown fox …") . La seule chose dont vous devez être conscient est l'encodage des caractères, ils doivent être identiques des deux côtés. Utilisez mb_convert_encoding() cas de doute.


Vous pourriez essayer ceci:

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




bytearray