Permalink
Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
74 lines (51 sloc) 2.58 KB
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title><![CDATA[nil]]></title>
<link href="http://kachick.github.com/atom.xml" rel="self"/>
<link href="http://kachick.github.com/"/>
<updated>2012-09-12T03:31:50+09:00</updated>
<id>http://kachick.github.com/</id>
<author>
<name><![CDATA[kachick]]></name>
</author>
<generator uri="http://octopress.org/">Octopress</generator>
<entry>
<title type="html"><![CDATA[Unchain Base Number Converter library in Ruby]]></title>
<link href="http://kachick.github.com/blog/2012/09/12/unchain-base-number-converter-library-in-ruby/"/>
<updated>2012-09-12T02:50:00+09:00</updated>
<id>http://kachick.github.com/blog/2012/09/12/unchain-base-number-converter-library-in-ruby</id>
<content type="html"><![CDATA[<h1>Rubyでフリーダムなn進数変換</h1>
<p>進数変換ライブラリを作ってあるので、これを紹介してみます。</p>
<p><a href="https://github.com/kachick/integer-base">integer-base</a></p>
<p>Rubyでは、普通進数変換で困るシーンって無いんじゃないかなと思います。
というのも、2~36進数の進数変換をぱっぱと出来る機能が組み込みで用意されているからです。</p>
<ul>
<li>Integer#to_s(base)</li>
<li>String#to_i(base)</li>
</ul>
<p>みたいに。</p>
<p>ということで、このライブラリは実用を目的としていません。</p>
<p>たとえば・・・</p>
<ul>
<li>36進数以上の進数変換やるとしたらどうなんだろ?</li>
<li>オレオレ数字で数を表現してみたい</li>
<li>つ1進数</li>
</ul>
<p>こういった思いつきレベルを、簡単に試せるようにして置きたかったわけです。
具体的には、進数表す整数の代わりに好きな文字並べた配列を渡すと、それに従って進数変換をかけます。
並べてみると、次の2つが同じ結果になります。</p>
<pre><code>'10'.to_i 2 #=&gt; 2
'10'.to_i %w[0 1] #=&gt; 2
</code></pre>
<p>これはつまり、 0-9 + A-Z = 36 という(実用の)壁を突破出来るということを示しているわけです。
たとえばこういうことができます。</p>
<pre><code>':)'.to_i %w[) :] #=&gt; 2
</code></pre>
<p>37進数以上だって余裕です、文字が思いつく限りですけど。</p>
<pre><code>'10'.to_i [*'0'..'9', *'A'..'Z', '?'] #=&gt; 37
</code></pre>
<p>ざっとこんなところです。
これが実用に使えたら大したもんです。</p>
]]></content>
</entry>
</feed>