1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/*-------------------------------------------------------------------------
*
* Copyright (c) 2004-2005, PostgreSQL Global Development Group
* Copyright (c) 2004, Open Cloud Limited.
*
* IDENTIFICATION
* $PostgreSQL: pgjdbc/org/postgresql/core/Utils.java,v 1.4 2005/01/11 08:25:43 jurka Exp $
*
*-------------------------------------------------------------------------
*/
package org.postgresql.core;
/**
* Collection of utilities used by the protocol-level code.
*/
public class Utils {
/**
* Turn a bytearray into a printable form, representing
* each byte in hex.
*
* @param data the bytearray to stringize
* @return a hex-encoded printable representation of <code>data</code>
*/
public static String toHexString(byte[] data) {
StringBuffer sb = new StringBuffer(data.length * 2);
for (int i = 0; i < data.length; ++i)
{
sb.append(Integer.toHexString((data[i] >> 4) & 15));
sb.append(Integer.toHexString(data[i] & 15));
}
return sb.toString();
}
/**
* Encode a string as UTF-8.
*
* @param str the string to encode
* @return the UTF-8 representation of <code>str</code>
*/
public static byte[] encodeUTF8(String str) {
// It turns out that under 1.4.2, at least, calling getBytes() is
// faster than rolling our own converter (it uses direct buffers and, I suspect,
// a native helper -- and the cost of the encoding lookup is mitigated by a
// ThreadLocal that caches the last lookup). So we just do things the simple way here.
try
{
return str.getBytes("UTF-8");
}
catch (java.io.UnsupportedEncodingException e)
{
// Javadoc says that UTF-8 *must* be supported by all JVMs, so we don't try to be clever here.
throw new RuntimeException("Unexpected exception: UTF-8 charset not supported: " + e);
}
}
}
|