ホームページ > バックエンド開発 > PHPチュートリアル > データを 16 進形式に変換する方法

データを 16 進形式に変換する方法

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
リリース: 2016-06-23 13:52:56
オリジナル
1201 人が閲覧しました

上の図に示すように、紫色です

これは blob 内のデータです。ここで、stream_get_contents を使用してそれを取り出し、図の右側の ASCII 形式に直接変更します。ただし、プロトコルは に基づいていません。アスキー。 16 進形式の文字列を取得または変換するにはどうすればよいですか?


ディスカッションへの返信 (解決策)

まず最初に 1 つ明確にしておきます
画像の右側の ASCII 形式と中央の HEX 形式は同じものです (これをバイナリ文字列と呼びます)
この2つの表現 どちらも実際のデータ通信では使われていません

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
4142 4344 4546 4748 494A 4B4C 4D4E 4F50

値を取得する関数が間違っているような気がしますが、経験が少なすぎる。元のデータを変更せずに文字列に変換するには何を使用できますか?

最初に 1 つ明確にしておきます
画像の右側の ASCII 形式と中央の HEX 形式はどちらも同じものです (これを私たちはそう呼んでいます)バイナリ文字列)
これら 2 つの表現は実際のデータ通信では使用されません

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
4142 4344 4546 4748 494A 4B4C 4D4E 4F50


これが私が今理解している方法です。プロトコルでは、データは 16 進数に従って 1 つずつデコードされます。たとえば、2 行目の DD07 は 10 進数に変換すると 221 と 7 になり、協定では 221+7*256=2013 と規定されます。しかし、この文字を取り出して ASCII 形式に直接変更すると、プロトコルが機能しません。これが私の問題です。なぜ 16 進形式で取り出すのでしょうか。

まず最初に明確にしておきます
画像の右側の ASCII 形式と中央の HEX 形式は同じものです (これをバイナリ文字列と呼びます)
これら 2 つの表現は実際のデータ通信では使用されません通信 バイナリ文字列はまだ使用されています

$s = 'ABCDEFGHIJKLMNOP';echo strtoupper(join(' ', str_split(bin2hex($s), 4)));
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
4142 4344 4546 4748 494A 4B4C 4D4E 4F50
ありがとう、Buzhu、本当に解決されました

16 進数 (HEX) 表現は直感的な説明のためです

もし10 個の文字列 16 進表現は DD07 です
次に、php では次のように記述できます
$s = chr(0x07); //221
echo ord($s{ 1} ; //7


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート