* Following codes is to change byte[] to integer-typed-value and vice versa.
=> Note : JavaVM uses Big-Endian. And, size of each integer-type is byte(1), short(2), int(4), long(8).
public static final int
byteArrayToLongBE(byte[] b) {
return ((b[0]&0xff) << 56) + ((b[1]&0xff) << 48)
+ ((b[2]&0xff) << 40) + ((b[3]&0xff) << 32)
+ ((b[4]&0xff) << 24) + ((b[5]&0xff) << 16)
+ ((b[6]&0xff) << 8) + (b[7]&0xff);
}
public static final int
byteArrayToLongLE(byte[] b) {
return (b[0]&0xff + ((b[1]&0xff) << 8)
+ ((b[2]&0xff) << 16) + ((b[3]&0xff) << 24)
+ ((b[4]&0xff) << 32) + ((b[5]&0xff) << 40)
+ ((b[6]&0xff) << 48) + ((b[7]&0xff) << 56));
}
public static final int
byteArrayToIntBE(byte[] b) {
return ((b[0]&0xff) << 24) + ((b[1]&0xff) << 16)
+ ((b[2]&0xff) << 8) + (b[3]&0xff);
}
public static final int
byteArrayToIntLE(byte[] b) {
return (b[0]&0xff) + ((b[1]&0xff) << 8)
+ ((b[2]&0xff) << 16) + ((b[3]&0xff) << 24);
}
public static final short
byteArrayToShortBE(byte[] b) {
return (short) (((b[0]&0xff) << 8) + (b[1]&0xff));
}
public static final short
byteArrayToShortLE(byte[] b) {
return (short) ((b[0]&0xff) + ((b[1]&0xff) << 8));
}
public static final byte[]
longToByteArrayBE(long v) {
return new byte[] {
(byte)(v >>> 56), (byte)(v >>> 48),
(byte)(v >>> 40), (byte)(v >>> 32),
(byte)(v >>> 24), (byte)(v >>> 16),
(byte)(v >>> 8), (byte)v};
}
public static final byte[]
longToByteArrayLE(long v) {
return new byte[] {
(byte)v, (byte)(v >>> 8),
(byte)(v >>> 16), (byte)(v >>> 24),
(byte)(v >>> 32), (byte)(v >>> 40),
(byte)(v >>> 48), (byte)(v >>> 56)};
}
public static final byte[]
intToByteArrayBE(int v) {
return new byte[] {
(byte)(v >>> 24), (byte)(v >>> 16),
(byte)(v >>> 8), (byte)v};
}
public static final byte[]
intToByteArrayLE(int v) {
return new byte[] {
(byte)v, (byte)(v >>> 8),
(byte)(v >>> 16), (byte)(v >>> 24)};
}
public static final byte[]
shortToByteArrayBE(short v) {
return new byte[] {(byte)(v >>> 8), (byte)v };
}
public static final byte[]
shortToByteArrayLE(short v) {
return new byte[] {(byte)v, (byte)(v >>> 8) };
}
* Run process
// Recommanded
// Run shell command and return it's output as string
public static String
runCmd(String... cmd) {
String r = "";
try {
// execute command
ProcessBuilder pb = new ProcessBuilder(cmds);
// pb.redirectErrorStream(true); // if needed.
// wait till running is done.
Process pr = pb.start();
pr.waitFor() ;
String line;
// Reader output of sub process.
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream())) ;
// Make output String object
while ( null != (line = br.readLine()) ) r += line + "\n";
} catch (Exception e) {
; // Exception Handling!
}
return r;
}
// OR
public static String
runCmd(String[] cmds) {
String r = "";
try {
// execute command
Process pr = Runtime.getRuntime().exec(cmds) ;
// wait till running is done.
pr.waitFor() ;
// Reader output of sub process.
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream())) ;
// Make output String object
String line;
while ( null != (line = br.readLine()) ) r += line + "\n";
} catch (Exception e) {
; // Exception Handling!
}
return r;
}
* Run shell command
// We should invoke SHELL (not process command directly)
// See above for 'runCmd'
String cmd = "ls -al | grep text";
runCmd("/bin/bash", "-c", cmd);
// or : runCmd(new String[]{"/bin/bash", "-c", cmd});
* Multi-lined JLabel : We can do this by using HTML directly.
JLabel jl = new JLabel("<html>1st line<br>2nd line</html>");
* Loading java property
Properties prop = new Properties();
try {
prop.load(new FileInputStream(property_file_path));
} catch (IOException e) {
; // exception handling
}
* String to Integer
try {
int v = Integer.parseInt("3456");
} catch (NumberFormatException e) {
; // exception handling
}
=== to be continued...