                 }
             }
 
-            lineBuffer[1] = StringUtil.padRight(
-                    valueBuffer.join(" "),
-                    valueBufferLength, " ");
-
-            lineBuffer[2] = StringUtil.padRight(
-                    String.fromCharCode.apply(String, charCodeBuffer),
-                    bytesPerLine, " ");
-
-            lines.push(lineBuffer.join(" "));
+            outputBuffer.appendva(
+                    StringUtil.padRight(
+                        valueBuffer.toString(),
+                        valueBufferLength, " "),
+                    " ",
+                    StringUtil.padRight(
+                        String.fromCharCode.apply(String, charCodeBuffer),
+                        bytesPerLine, " "),
+                    "\n");
         }
 
-        return lines.join("\n");
+        return outputBuffer.toString();
     }
 }
 }

                endOfLine = byteArray.length;
            }

            valueBuffer = [ ];
            charCodeBuffer = [ ];

            lineBuffer[0] = StringUtil.padLeft(
                    byteIndex.toString(16).toUpperCase(),
                    8, "0");

            for (; byteIndex < endOfLine; byteIndex++)
            {
                byte = byteArray[byteIndex];

                valueString = byte.toString(16).toUpperCase();
                valueBuffer.push(byte < 0x10 ? ("0" + valueString) : valueString);

                if ((byte >= 0x20 && byte <= 0x7E) ||
                        (byte >= 0xA0 && byte <= 0xAC) ||

        var byteIndex:uint;
        var endOfLine:uint;

        var outputBuffer:StringBuilder = new StringBuilder();

        var valueString:String;
        var valueBuffer:StringBuilder = new StringBuilder();
        var valueBufferLength:uint = (bytesPerLine * 3);

        var charCodeBuffer:Array;
        var nonPrintingCharCode:uint;
