====== How to convert data type X into type Y in Java ====== **The examples below show how to convert between different data types in Java. This is useful if you write your own plugins.** ===== integer to String : ===== int i = 42; \\ String str = Integer.toString(i); or String str = "" + i; ===== double to String : ===== String str = Double.toString(d); or (in ImageJ only): String str1 = IJ.d2s(d, n); // n (0...9) digits to the right of the decimal point String str2 = IJ.d2s(d); // 2 digits to the right of the decimal point ===== long to String : ===== String str = Long.toString(l); ===== float to String : ===== String str = Float.toString(f); ===== String to integer : ===== str = "25";\\ int i = Integer.valueOf(str).intValue(); or int i = Integer.parseInt(str); ===== String to double : ===== double d = Double.valueOf(str).doubleValue(); or (in ImageJ only):\\ double d = Tools.parseDouble(str, defaultValue);\\ // results in defaultValue if the string str results in no valid number ===== String to long : ===== long l = Long.valueOf(str).longValue(); or long l = Long.parseLong(str); ===== String to float : ===== float f = Float.valueOf(str).floatValue(); ===== decimal to binary : ===== int i = 42;\\ String binstr = Integer.toBinaryString(i); ===== decimal to hexadecimal : ===== int i = 42;\\ String hexstr = Integer.toString(i, 16); or String hexstr = Integer.toHexString(i); or (with leading zeroes and uppercase) public class Hex { public static void main(String args[]){ int i = 42; System.out.print (Integer.toHexString( 0x10000 | i).substring(1).toUpperCase()); } } ===== Color to hexadecimal ===== (ImageJ only) String str = Tools.c2hex(myColor); // results in "#rrggbb", e.g., "#FF0000" for red ===== hexadecimal (String) to integer : ===== int i = Integer.valueOf("B8DA3", 16).intValue(); or int i = Integer.parseInt("B8DA3", 16); ===== ASCII code to String: ===== int i = 64;\\ String aChar = new Character((char)i).toString(); ===== integer to ASCII code (byte): ===== char c = 'A';\\ int i = (int) c; // i will have the value 65 decimal ===== To extract ASCII codes from a String: ===== String test = "ABCD"; for ( int i = 0; i < test.length(); ++i ) { char c = test.charAt( i ); int i = (int) c; System.out.println(i); } ===== integer to boolean: ===== b = (i != 0); ===== boolean to integer: ===== i = (b)?1:0; ===== float to double ===== float f = (float)d; For arrays (in ImageJ only):\\ float[] fArray = Tools.toFloat(dArray); ===== double to float ===== double d = f; //no explicit typecast needed For arrays (in ImageJ only):\\ double[] dArray = Tools.toDouble(fArray); ===== To catch illegal number conversions: ===== Try using the try/catch mechanism: try{ i = Integer.parseInt(aString); } catch(NumberFormatException e) { }