<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: Devijvers's Code Snippets</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Sun, 12 Oct 2008 03:57:00 GMT</pubDate>
    <description>DZone Snippets: Devijvers's Code Snippets</description>
    <item>
      <title>Format code with line numbers in Markdown notation</title>
      <link>http://snippets.dzone.com/posts/show/4642</link>
      <description>&lt;code&gt;&lt;br /&gt;C:\&gt;type Format.groovy | groovy Format&lt;br /&gt;     1: def counter = 1&lt;br /&gt;     2:&lt;br /&gt;     3: System.in.eachLine {&lt;br /&gt;     4:         line -&gt;&lt;br /&gt;     5:&lt;br /&gt;     6:         def result = "    "&lt;br /&gt;     7:         (2 - ("" + counter).length()).times { result += " " }&lt;br /&gt;     8:         result += "${counter}: ${line}"&lt;br /&gt;     9:         println result&lt;br /&gt;    10:         counter++&lt;br /&gt;    11: }&lt;br /&gt;&lt;br /&gt;C:\&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def counter = 1&lt;br /&gt;&lt;br /&gt;System.in.eachLine {&lt;br /&gt;	line -&gt;&lt;br /&gt;	&lt;br /&gt;	def result = "    "&lt;br /&gt;	(2 - ("" + counter).length()).times { result += " " }&lt;br /&gt;	result += "${counter}: ${line}"&lt;br /&gt;	println result&lt;br /&gt;	counter++&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 12 Oct 2007 12:09:19 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4642</guid>
      <author>devijvers (Steven Devijver)</author>
    </item>
    <item>
      <title>Send a bad request to a web service for testing garbage resilience</title>
      <link>http://snippets.dzone.com/posts/show/4641</link>
      <description>// description of your code here&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;def link = "http://localhost:8080/webservices/MyWebService"&lt;br /&gt;&lt;br /&gt;def url = new URL(link)&lt;br /&gt;&lt;br /&gt;def conn = url.openConnection()&lt;br /&gt;conn.doOutput = true&lt;br /&gt;&lt;br /&gt;conn.outputStream &lt;&lt; "BROL"&lt;br /&gt;&lt;br /&gt;conn.inputStream.eachLine { println it }&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 12 Oct 2007 12:07:41 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4641</guid>
      <author>devijvers (Steven Devijver)</author>
    </item>
    <item>
      <title>Custom base conversion (to and from)</title>
      <link>http://snippets.dzone.com/posts/show/4594</link>
      <description>Handy to store large numbers in a shorter notation. Doesn't work with negative numbers (for negative numbers you need to store an additional byte to indicate a positive or negative value, pass the absolute value).&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;	private static final short BASE_40_RADIX = 40;&lt;br /&gt;	private static final short BASE_40_BASE = 48;&lt;br /&gt;	private static final String BASE_40_ZERO = "0";&lt;br /&gt;&lt;br /&gt;	public static long fromBase40(char[] cs) {&lt;br /&gt;		return fromBase(cs, BASE_40_BASE, BASE_40_RADIX);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static char[] toBase40(final long i) {&lt;br /&gt;		return toBase(i, BASE_40_BASE, BASE_40_RADIX, BASE_40_ZERO);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static final short BASE_75_RADIX = 75;&lt;br /&gt;	private static final short BASE_75_BASE = 48;&lt;br /&gt;	private static final String BASE_75_ZERO = "0";&lt;br /&gt;&lt;br /&gt;	public static long fromBase75(char[] cs) {&lt;br /&gt;		return fromBase(cs, BASE_75_BASE, BASE_75_RADIX);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static char[] toBase75(final long i) {&lt;br /&gt;		return toBase(i, BASE_75_BASE, BASE_75_RADIX, BASE_75_ZERO);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static final short BASE_90_RADIX = 90;&lt;br /&gt;	private static final short BASE_90_BASE = 33;&lt;br /&gt;	private static final String BASE_90_ZERO = "!";&lt;br /&gt;&lt;br /&gt;	public static long fromBase90(char[] cs) {&lt;br /&gt;		return fromBase(cs, BASE_90_BASE, BASE_90_RADIX);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static char[] toBase90(final long i) {&lt;br /&gt;		return toBase(i, BASE_90_BASE, BASE_90_RADIX, BASE_90_ZERO);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static char[] toBase(final long i, final short base, final short radix, String nullCharacter) {&lt;br /&gt;		long value = i;&lt;br /&gt;&lt;br /&gt;		if (value == 0) {&lt;br /&gt;			return nullCharacter.toCharArray();&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		String result = "";&lt;br /&gt;		while (value &gt; 0) {&lt;br /&gt;			long mod = value % radix;&lt;br /&gt;			value -= mod;&lt;br /&gt;			if (value &gt; 0) value /= radix;&lt;br /&gt;			result = (char)(mod + base) + result;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return result.toCharArray();&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	private static long fromBase(char[] cs, final short base, final short radix) {&lt;br /&gt;		long value = 0;&lt;br /&gt;		for (int i = cs.length - 1; i &gt;= 0; i--) {&lt;br /&gt;			int digit = ((int)cs[i]) - base;&lt;br /&gt;			if (digit &lt; 0 || digit &gt;= radix) {&lt;br /&gt;				throw new IllegalArgumentException("Invalid Base" + radix + " character: " + cs[i]);&lt;br /&gt;			}&lt;br /&gt;			long digitBase = (long)Math.pow(radix, (cs.length - 1) - i);&lt;br /&gt;			value = (digit * digitBase) + value;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return value;&lt;br /&gt;	}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And here are some tests:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;	public void testFromBase40() {&lt;br /&gt;		assertEquals(2559999, NumberUtils.fromBase40("WWWW".toCharArray()));&lt;br /&gt;		assertEquals(1117580, NumberUtils.fromBase40("ABCD".toCharArray()));&lt;br /&gt;&lt;br /&gt;		assertEquals(0, NumberUtils.fromBase40("0".toCharArray()));&lt;br /&gt;		assertEquals(1, NumberUtils.fromBase40("1".toCharArray()));&lt;br /&gt;&lt;br /&gt;		assertEquals(40, NumberUtils.fromBase40("10".toCharArray()));&lt;br /&gt;		assertEquals(80, NumberUtils.fromBase40("20".toCharArray()));&lt;br /&gt;&lt;br /&gt;		assertEquals(41, NumberUtils.fromBase40("11".toCharArray()));&lt;br /&gt;		assertEquals(81, NumberUtils.fromBase40("21".toCharArray()));&lt;br /&gt;&lt;br /&gt;		assertEquals(81, NumberUtils.fromBase40("0021".toCharArray()));&lt;br /&gt;&lt;br /&gt;		assertEquals(3061560805L, NumberUtils.fromBase40("MSTSD5".toCharArray()));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void testToBase40() {&lt;br /&gt;		assertEquals("0", new String(NumberUtils.toBase40(0)));&lt;br /&gt;		assertEquals("1", new String(NumberUtils.toBase40(1)));&lt;br /&gt;&lt;br /&gt;		assertEquals("10", new String(NumberUtils.toBase40(40)));&lt;br /&gt;		assertEquals("20", new String(NumberUtils.toBase40(80)));&lt;br /&gt;&lt;br /&gt;		assertEquals("11", new String(NumberUtils.toBase40(41)));&lt;br /&gt;		assertEquals("21", new String(NumberUtils.toBase40(81)));&lt;br /&gt;&lt;br /&gt;		assertEquals("ABCD", new String(NumberUtils.toBase40(1117580)));&lt;br /&gt;		assertEquals("WWWW", new String(NumberUtils.toBase40(2559999)));&lt;br /&gt;&lt;br /&gt;		assertEquals("MSTSD5", new String(NumberUtils.toBase40(3061560805L)));&lt;br /&gt;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void testToBase90() throws Exception {&lt;br /&gt;		assertEquals("#Q&amp;Y.`QY#", new String(NumberUtils.toBase90(10908158098650842L)));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void testFromBase90() throws Exception {&lt;br /&gt;		assertEquals(10908158098650842L, NumberUtils.fromBase90("#Q&amp;Y.`QY#".toCharArray()));&lt;br /&gt;	}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;</description>
      <pubDate>Sun, 30 Sep 2007 23:44:48 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4594</guid>
      <author>devijvers (Steven Devijver)</author>
    </item>
    <item>
      <title>Convert a long to HEX value and the other way around</title>
      <link>http://snippets.dzone.com/posts/show/4593</link>
      <description>Handy to convert MD5 or SHA-1 hash values.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;	public static long hexToLong(byte[] bytes) {&lt;br /&gt;&lt;br /&gt;		if (bytes.length &gt; 16) {&lt;br /&gt;			throw new IllegalArgumentException("Byte array too long (max 16 elements)");&lt;br /&gt;		}&lt;br /&gt;		long v = 0;&lt;br /&gt;		for (int i = 0; i &lt; bytes.length; i += 2) {&lt;br /&gt;			byte b1 = (byte) (bytes[i] &amp; 0xFF);&lt;br /&gt;&lt;br /&gt;			b1 -= 48;&lt;br /&gt;			if (b1 &gt; 9) b1 -= 39;&lt;br /&gt;&lt;br /&gt;			if (b1 &lt; 0 || b1 &gt; 15) {&lt;br /&gt;				throw new IllegalArgumentException("Illegal hex value: " + bytes[i]);&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			b1 &lt;&lt;=4;&lt;br /&gt;&lt;br /&gt;			byte b2 = (byte) (bytes[i + 1] &amp; 0xFF);&lt;br /&gt;			b2 -= 48;&lt;br /&gt;			if (b2 &gt; 9) b2 -= 39;&lt;br /&gt;&lt;br /&gt;			if (b2 &lt; 0 || b2 &gt; 15) {&lt;br /&gt;				throw new IllegalArgumentException("Illegal hex value: " + bytes[i + 1]);&lt;br /&gt;			}&lt;br /&gt;&lt;br /&gt;			v |= (((b1 &amp; 0xF0) | (b2 &amp; 0x0F))) &amp; 0x00000000000000FFL ;&lt;br /&gt;&lt;br /&gt;			if (i + 2 &lt; bytes.length) v &lt;&lt;= 8;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return v;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public static byte[] longToHex(final long l) {&lt;br /&gt;		long v = l &amp; 0xFFFFFFFFFFFFFFFFL;&lt;br /&gt;&lt;br /&gt;		byte[] result = new byte[16];&lt;br /&gt;		Arrays.fill(result, 0, result.length, (byte)0);&lt;br /&gt;&lt;br /&gt;		for (int i = 0; i &lt; result.length; i += 2) {&lt;br /&gt;			byte b = (byte) ((v &amp; 0xFF00000000000000L) &gt;&gt; 56);&lt;br /&gt;&lt;br /&gt;			byte b2 = (byte) (b &amp; 0x0F);&lt;br /&gt;			byte b1 = (byte) ((b &gt;&gt; 4) &amp; 0x0F);&lt;br /&gt;&lt;br /&gt;			if (b1 &gt; 9) b1 += 39;&lt;br /&gt;			b1 += 48;&lt;br /&gt;&lt;br /&gt;			if (b2 &gt; 9) b2 += 39;&lt;br /&gt;			b2 += 48;&lt;br /&gt;&lt;br /&gt;			result[i] = (byte) (b1 &amp; 0xFF);&lt;br /&gt;			result[i + 1] = (byte) (b2 &amp; 0xFF);&lt;br /&gt;&lt;br /&gt;			v &lt;&lt;= 8;&lt;br /&gt;		}&lt;br /&gt;&lt;br /&gt;		return result;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And tests:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;	public void testHexToLong() throws Exception {&lt;br /&gt;		assertEquals(-7057002501900618110L, NumberUtils.hexToLong("9e107d9d372bb682".getBytes()));&lt;br /&gt;		assertEquals(-10908158098650842L, NumberUtils.hexToLong("ffd93f1687604926".getBytes()));&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	public void testLongToHex() throws Exception {&lt;br /&gt;		assertEquals("9e107d9d372bb682", new String(NumberUtils.longToHex(-7057002501900618110L)));&lt;br /&gt;		assertEquals("ffd93f1687604926", new String(NumberUtils.longToHex(-10908158098650842L)));&lt;br /&gt;	}&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Sun, 30 Sep 2007 23:30:01 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4593</guid>
      <author>devijvers (Steven Devijver)</author>
    </item>
  </channel>
</rss>
