<?xml version="1.0" encoding="UTF-8"?><item><title>uudecode</title><description>&lt;FONT face="Courier New"&gt;&lt;FONT size=2&gt;&lt;FONT color=#0000ff&gt;&lt;FONT size=2&gt;&#13;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;static&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] uuDecode(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; sBuffer) &lt;BR&gt;{ &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp; // Create an output array&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] outBuffer = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;new&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;[(sBuffer.Length-1)/4*3];&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; int&lt;/FONT&gt;&lt;FONT size=2&gt; outIdx = 0;&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp; // Get the string as an array of ASCII bytes&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; byte&lt;/FONT&gt;&lt;FONT size=2&gt;[] asciiBytes = Encoding.ASCII.GetBytes(sBuffer);&lt;BR&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i=0; i&amp;lt;asciiBytes.Length; i++)&lt;BR&gt;&amp;nbsp; &amp;nbsp; asciiBytes[i] = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;)((asciiBytes[i]-0x20) &amp;amp; 0x3f);&lt;/P&gt;&#13;
&lt;P&gt;&lt;/P&gt;&#13;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp; // Convert each block fo 4 input bytes into 3&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;&amp;nbsp; // output bytes&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp; for&lt;/FONT&gt;&lt;FONT size=2&gt; (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;/FONT&gt;&lt;FONT size=2&gt; i = 1; i &amp;lt;= (asciiBytes.Length-1); i += 4) &lt;BR&gt;&amp;nbsp; { &lt;BR&gt;&amp;nbsp; &amp;nbsp; outBuffer[outIdx++] = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;)(asciiBytes[i] &amp;lt;&amp;lt; 2 | asciiBytes[i+1] &amp;gt;&amp;gt; 4);&lt;BR&gt;&amp;nbsp; &amp;nbsp; outBuffer[outIdx++] = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;)(asciiBytes[i+1] &amp;lt;&amp;lt; 4 | asciiBytes[i+2] &amp;gt;&amp;gt; 2);&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;outBuffer[outIdx++] = (&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;byte&lt;/FONT&gt;&lt;FONT size=2&gt;)(asciiBytes[i+2] &amp;lt;&amp;lt; 6 | asciiBytes[i+3]);&lt;BR&gt;&amp;nbsp; } &lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;BR&gt;&amp;nbsp; return&lt;/FONT&gt;&lt;FONT size=2&gt; outBuffer;&lt;BR&gt;} &lt;/P&gt;&#13;
&lt;P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size=2&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&#13;
&lt;P&gt;There you go; next time you're writing a Usenet news reader, you'll have somewhere to copy the uudecode function from.&lt;/P&gt;&#13;
&lt;P&gt;Source code looks so much better in colour doesn't it?&lt;/P&gt;&#13;
&lt;P&gt;(This is a fixed version of the source; thanks to Esa Leskinen for pointing out that my previous version was incomplete).&lt;/P&gt;</description><pubDate>Thu, 01 Sep 2005 19:17:06 GMT</pubDate></item>