[#49148] Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます — Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>

はじめまして。横塚と申します。

16 messages 2013/01/29

[ruby-list:49158] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます

From: Daisuke Yokotsuka <yokots_d@...3-net.ne.jp>
Date: 2013-01-29 12:44:16 UTC
List: ruby-list #49158
たなべ様

申し訳ありません。色々と実験をしたりしているうちに
せっかくのご教示に気付くのが遅れてしまいました。

target = data.bytes.take(72).pack("c*").force_encoding("Windows-31J") ; 

というコードで、実行結果は問題なく解決できました。
ただ、性能が問題で、10万回のループで1秒強の結果となってしまいました。
1バイトずつ取り出して、あとから連結すると、やっぱり遅いみたいです。

ご教示、ありがとうございました。

横塚

<CAP4kF4YjEtd+U=-oH+SWXb3D_wXZj84FyR1e+J_S0XSNSZS8Ug@mail.gmail.com> の、
   "[ruby-list:49152] Re: Ruby 1.9で、バイト長の部分文字列を作りたくて悩んでます" において、
   "sunao tanabe <aib@csc.jp>"さんは書きました:

> たなべです。
> 
> 2013/1/29 Shota Fukumori (sora_h) <sorah@tubusu.net>:
> > sorahです。
> >
> > data.bytes.take(72) で 72 バイトを Array で取得できるので、String で欲しければそれを join すれ
ば
> > String が取れると思います。
> >
> > String#bytes 、 Enumerable#.take のリファレンスをお読みください。
> 
> pack と String#force_encoding も調べておくとよさそうです。
> 
> http://rurema.clear-code.com/1.9.3/method/String/i/force_encoding.html
> 
> 


--
Daisuke Yokotsuka

In This Thread