www.pudn.com > GMapViewer-src.zip > Util.java
package org.sreid.j2me.util;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;
/** Various static utility methods. */
public final class Util {
private Util() { }
// these really ought to be statics in Boolean itself, like in J2SE
public static final Boolean BOOLEAN_TRUE = new Boolean(true);
public static final Boolean BOOLEAN_FALSE = new Boolean(false);
private static final String HEXDIGITS = "0123456789ABCDEF";
/** Reads 4 bytes from a byte array, starting at offset, and converts them to an int. */
public static int bytesToInt(byte[] data, int offset) {
return (
((data[offset+0] & 0xff) << 24) |
((data[offset+1] & 0xff) << 16) |
((data[offset+2] & 0xff) << 8) |
((data[offset+3] & 0xff) << 0) );
}
/** Writes an int into a byte array as 4 bytes, starting at offset. */
public static void intToBytes(int value, byte[] data, int offset) {
data[offset+0] = (byte)((value >> 24) & 0xff);
data[offset+1] = (byte)((value >> 16) & 0xff);
data[offset+2] = (byte)((value >> 8) & 0xff);
data[offset+3] = (byte)((value >> 0) & 0xff);
}
public static String urlEncode(String str) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLowerCase(c) || Character.isUpperCase(c) || Character.isDigit(c)) {
// Letter or number. No need to encode.
sb.append(c);
}
else {
// Encode it.
int cc = (int)c;
if (cc < 0 || cc > 255) {
sb.append('?'); //XXX
}
else {
sb.append('%');
sb.append(HEXDIGITS.charAt((cc >> 4) & 0x0f));
sb.append(HEXDIGITS.charAt(cc & 0x0f));
}
}
}
return sb.toString();
}
public static String bytesToHex(byte[] data, int off, int len) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < len; i++) {
if (i != 0) sb.append(' ');
int b = data[off+i] & 0xff;
sb.append(HEXDIGITS.charAt((b >> 4) & 0x0f));
sb.append(HEXDIGITS.charAt(b & 0x0f));
}
return sb.toString();
}
}