質問
どのように私は上の数字、文字などを含むことができ、いくつかの文字列からバイト配列を得ることができますか? あなたは、Javaに精通している場合、私は、GetBytesメソッド()メソッドと同じ機能を探しています。
私はこの1つのようなスニペットを試します:
for($i = 0; $i < strlen($msg); $i++){
$data.=ord($msg[$i]);
//or $data[]=ord($msg[$1]);
}
が、成功せず、そのヘルプのいずれかの種類が理解されるであろう。
PS:なぜ私はすべてでこれを必要なのですか!?さて、私は...
Javaで書かれたサーバにfputs()を経由してバイト配列を送信する必要があります解決
@Sparrは右ですが、私はあなたがC#でbyte[]
のようなバイト配列を期待推測します。 SPARRがしたが、代わりにHEXのあなたはint
プレゼンテーションを期待通りには(の範囲は0から255までの)各char
の同じソリューションです。次のようにあなたが行うことができます:
$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
(のの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) }
注意してください:(それはコメントで指摘されたとして)出力配列は、1ベースのインデックスである。
他のヒント
print_r(unpack("H*","The quick fox jumped over the lazy brown dog"))
Array ( [1] => 54686520717569636b20666f78206a756d706564206f76657220746865206c617a792062726f776e20646f67 )
T =が0x54、H = 0x68、...
必要な場合は、二進文字のチャンクに結果を分割することができます。
あなたはこれを試すことができます:
$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);
PHPでは、文字列はbytestreamsです。正確に何をしようとしている?
日時:編集
Psの。なぜ私は、このすべてが必要なのか!?まあ、私はJavaで書かれたサーバーへのByteArray fputs()を経由して送信する必要があります...
fputs
は、引数として文字列を取ります。ほとんどの場合、あなたはそれにあなたの文字列を渡す必要があります。物事のJava側では、あなたはどんなエンコーディングでは、あなたがPHPで使用している(デフォルトはISO-8859-1である)データをデコードする必要があります。
PHPは、明示的なbyte
タイプを持っていないが、そのstring
はすでにJavaのbyte配列のと同じです。あなたは安全にfputs($connection, "The quick brown fox …")
を書くことができます。あなたが知っていなければならない唯一のものは、文字符号化して、彼らは両側で同じでなければなりません。疑わしい場合は mb_convert_encoding()に使用します。
私が見つけたいくつかの機能は非常に便利です。
彼らは、バイト配列とその逆に文字列をひそかことができます。
例として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]);
}
?>