以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/05/12/212133より取得しました。


8進数リテラルや16進数リテラルが混在した文字列を元の16進数な文字列に置換する

SerialPortなどで16進数のパケットを受けると、
こんな感じの文字列が返ってくる事があります。

"~\u0000\u0018\x91\u0000\u0013\xA2\u0000@u"

もとは16進数の数値がズラズラと並んでいるはずなのですが。

てな感じで処理されるようです。
とはいえ、このままだと何書いてるのかわからないですね。
そういう場合はunpackを使ってあげるとよいです

ケース1:一本の文字列として

("H*")で切り出してあげれば、元の16進数の値が呼び出せます
Bindataに渡すなら、これです。

"~\u0000\u0018\x91\u0000\u0013\xA2\u0000@u".unpack("H*")
#=> ["7e0018910013a2004075"]

ケース2:一バイトごとに

一バイトごとに処理したい場合は("C*")

p "~\u0000\u0018\x91\u0000\u0013\xA2\u0000@u".unpack("C*")
#=> [126, 0, 24, 145, 0, 19, 162, 0, 64, 117]



以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/05/12/212133より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14