Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
212 lines (121 sloc) 5.59 KB
<!DOCTYPE html>
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
<head>
<meta charset="utf-8">
<title>nil</title>
<meta name="author" content="kachick">
<meta name="description" content="Rubyでフリーダムなn進数変換 進数変換ライブラリを作ってあるので、これを紹介してみます。 integer-base Rubyでは、普通進数変換で困るシーンって無いんじゃないかなと思います。
というのも、2~36進数の進数変換をぱっぱと出来る機能が組み込みで用意されているからです。 &hellip;">
<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="http://kachick.github.com/">
<link href="/favicon.png" rel="icon">
<link href="/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
<script src="/javascripts/modernizr-2.0.js"></script>
<script src="/javascripts/ender.js"></script>
<script src="/javascripts/octopress.js" type="text/javascript"></script>
<link href="/atom.xml" rel="alternate" title="nil" type="application/atom+xml">
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
<link href="http://fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
<link href="http://fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
</head>
<body >
<header role="banner"><hgroup>
<h1><a href="/">nil</a></h1>
<h2>nil is nil.</h2>
</hgroup>
</header>
<nav role="navigation"><ul class="subscription" data-subscription="rss">
<li><a href="/atom.xml" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
</ul>
<form action="http://google.com/search" method="get">
<fieldset role="search">
<input type="hidden" name="q" value="site:kachick.github.com" />
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
</fieldset>
</form>
<ul class="main-navigation">
<li><a href="/">Blog</a></li>
<li><a href="/blog/archives">Archives</a></li>
</ul>
</nav>
<div id="main">
<div id="content">
<div class="blog-index">
<article>
<header>
<h1 class="entry-title"><a href="/blog/2012/09/12/unchain-base-number-converter-library-in-ruby/">Unchain Base Number Converter Library in Ruby</a></h1>
<p class="meta">
<time datetime="2012-09-12T02:50:00+09:00" pubdate data-updated="true">2012/09/12</time>
</p>
</header>
<div class="entry-content"><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>
</div>
</article>
<div class="pagination">
<a href="/blog/archives">Blog Archives</a>
</div>
</div>
<aside class="sidebar">
<section>
<h1>Recent Posts</h1>
<ul id="recent_posts">
<li class="post">
<a href="/blog/2012/09/12/unchain-base-number-converter-library-in-ruby/">Unchain Base Number Converter library in Ruby</a>
</li>
</ul>
</section>
</aside>
</div>
</div>
<footer role="contentinfo"><p>
Copyright &copy; 2012 - kachick -
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
</p>
</footer>
<script type="text/javascript">
(function(){
var twitterWidgets = document.createElement('script');
twitterWidgets.type = 'text/javascript';
twitterWidgets.async = true;
twitterWidgets.src = 'http://platform.twitter.com/widgets.js';
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
})();
</script>
</body>
</html>