お世話になります。
rubyやphpにあるpack / unpack関数について質問です。
- pack関数はテキスト文字をバイナリ文字に変換する関数、という認識で合ってますでしょうか。
(「バイナリ文字列にパックする」という説明をよく見かけたのですが、パック=変換?)
※ちなみに「バイナリ文字」は「コンピュータが理解できる、テキストデータ以外のデータ」くらいの理解しかありません。。
- 例えばrubyで下記のコードを実行した結果、下記の通りになったのですが変換後の値("\x01"や"\a")はどこから出てきたのでしょうか。ASCIIコードではないですよね。。
また下記の[82, 117, 98, 121]をpackすると"Ruby"という文字になりますが、この[82, 117, 98, 121]は何の数字なのでしょうか。
ruby
1[1] pry(main)> [1].pack('C*') 2=> "\x01" 3[2] pry(main)> [7].pack('C*') 4=> "\a" 5[3] pry(main)> [82, 117, 98, 121].pack('C*') 6=> "Ruby"
- unpackは「バイナリ(と文字列)を数値に変換する関数」という認識ですが、なんの数値に変換されるのでしょうか。
ruby
1"a".unpack("C*") 2=> [97] # この 97 は何?
- そもそもの前提知識が足りないために理解できないのですが、どういったキーワードで知識を仕入れたらよいでしょうか。 例)「文字コード」「バイナリとは」など。。
画像ファイルやExcelファイルなどテキストエディタで開けないようなファイルも、
コンピュータ上ではバイナリ形式(2進数)で表されるため、
プログラム上でそういったバイナリファイルを扱う際にpackを使うのかなー、といった程度の理解だったのですが、
前提知識がないため、いくら調べても分かりませんでした。。
できるだけ砕いて説明頂けると、または知識の仕入れ先を教えて頂けるとありがたいです。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/13 02:38
2017/12/13 03:35 編集
2017/12/13 02:57
2017/12/13 03:27
2017/12/13 04:22