Posts tagged binary
Binary, Octal, Decimal and Hexadecimal converter(Java)
0I was working on a simple project that simulate CPU registers, where users can use an assembly-like commands to issue some process while watching changes on the virtual CPU registers.
you may visit it using this link: http://www.doitmyway.net/2010/02/21/cpu-registers-simulator-educational-project/
In fact CPU data are in binary, although users may want to read those data in different format. So I implemented a simple Java class to convert numbers from/to binary, octal, decimal and hexadecimal.
There are 6 main functions:
- decToBin
- binToDec
- octToBin
- binToOct
- hexToBin
- binToHex
The other functions are supporting functions or functions based on the main functions, e.g, decToHex is a combination of decToBin and binToHex.
baseConvertor.java
//DoItMyWay.net //a7med.yamani@gmail.com //licensed under gpl v3 :) package cpuregsim; public class baseConvertor { //reverse string, give it "abc" and it will returns "cba" public String reverseString(String str) { str = str.trim(); int strl = str.length(); if (strl > 1) { StringBuffer sb = new StringBuffer(); for (int i = strl - 1; i >= 0; i--) { sb.append(str.charAt(i) + ""); } return sb.toString(); } return str; } //convert decimal to hex public String decToHex(String dec) { return binToHex(decToBin(dec)); } //convert decimal to oct public String decToOct(String dec) { return binToOct(decToBin(dec)); } //convert decimal to bin public String decToBin(String dec) { if (!isDecimal(dec)) { return "Invalid input!"; } int val = Integer.parseInt(dec); if (val == 0) { return "0"; } StringBuffer bin = new StringBuffer(); for (; val != 1; val = val / 2) { bin.append((val % 2) + ""); } bin.append("1"); return reverseString(bin.toString()); } //convert oct to decimal public String octToDec(String oct) { return binToDec(octToBin(oct)); } //convert oct to hex public String octToHex(String oct) { return binToHex(octToBin(oct)); } //convert oct to bin public String octToBin(String oct) { if (!isOctal(oct)) { return "Invalid input!"; } StringBuffer sb = new StringBuffer(); for (int i = 0; i < oct.length(); i++) { if (oct.charAt(i) == '0') { sb.append("000"); } else if (oct.charAt(i) == '1') { sb.append("001"); } else if (oct.charAt(i) == '2') { sb.append("010"); } else if (oct.charAt(i) == '3') { sb.append("011"); } else if (oct.charAt(i) == '4') { sb.append("100"); } else if (oct.charAt(i) == '5') { sb.append("101"); } else if (oct.charAt(i) == '6') { sb.append("110"); } else if (oct.charAt(i) == '7') { sb.append("111"); } } return Long.parseLong(sb.toString()) + ""; } //convert hex to decimal public String hexToDec(String hex) { return binToDec(hexToBin(hex)); } //convert hex to oct public String hexToOct(String hex) { return binToOct(hexToBin(hex)); } //convert hex to bin public String hexToBin(String hex) { hex = hex.toUpperCase(); if (!isHexaDecimal(hex)) { return "Invalid input!"; } StringBuffer sb = new StringBuffer(); for (int i = 0; i < hex.length(); i++) { if (hex.charAt(i) == '0') { sb.append("0000"); } else if (hex.charAt(i) == '1') { sb.append("0001"); } else if (hex.charAt(i) == '2') { sb.append("0010"); } else if (hex.charAt(i) == '3') { sb.append("0011"); } else if (hex.charAt(i) == '4') { sb.append("0100"); } else if (hex.charAt(i) == '5') { sb.append("0101"); } else if (hex.charAt(i) == '6') { sb.append("0110"); } else if (hex.charAt(i) == '7') { sb.append("0111"); } else if (hex.charAt(i) == '8') { sb.append("1000"); } else if (hex.charAt(i) == '9') { sb.append("1001"); } else if (hex.charAt(i) == 'A') { sb.append("1010"); } else if (hex.charAt(i) == 'B') { sb.append("1011"); } else if (hex.charAt(i) == 'C') { sb.append("1100"); } else if (hex.charAt(i) == 'D') { sb.append("1101"); } else if (hex.charAt(i) == 'E') { sb.append("1110"); } else if (hex.charAt(i) == 'F') { sb.append("1111"); } } return Long.parseLong(sb.toString()) + ""; } //is input represents a Binary number public boolean isBinary(String bin) { return bin.matches("[0|1]+"); } //is input represents a Octal number public boolean isOctal(String bin) { return bin.matches("[0-7]+"); } //is input represents a Hexadecimal number public boolean isHexaDecimal(String bin) { return bin.toUpperCase().matches("[0-9|A-F]+"); } //is input represents a decimal number public boolean isDecimal(String bin) { return bin.matches("[0-9]+"); } //convert bin to decimal public String binToDec(String bin) { if (!isBinary(bin)) { return "Invalid input!"; } int nOfDigits = bin.length(); int val = 0; bin = reverseString(bin); for (int i = 0; i < nOfDigits; i++) { try { val = val + Integer.parseInt(bin.charAt(i) + "") * ((int) Math.pow(2, i)); } catch (NumberFormatException nfe) { return "Invalid input!"; } } return val + ""; } //convert bin to oct public String binToOct(String bin) { if (!isBinary(bin)) { return "Invalid input!"; } String[] tokens = splitByWidth(bin, 3, '0'); StringBuffer sb = new StringBuffer(); for (int i = 0; i < tokens.length; i++) { if (tokens[i].equals("000")) { sb.append("0"); } else if (tokens[i].equals("001")) { sb.append("1"); } else if (tokens[i].equals("010")) { sb.append("2"); } else if (tokens[i].equals("011")) { sb.append("3"); } else if (tokens[i].equals("100")) { sb.append("4"); } else if (tokens[i].equals("101")) { sb.append("5"); } else if (tokens[i].equals("110")) { sb.append("6"); } else if (tokens[i].equals("111")) { sb.append("7"); } } return sb.toString(); } //convert bin to hex public String binToHex(String bin) { if (!isBinary(bin)) { return "Invalid input!"; } String[] tokens = splitByWidth(bin, 4, '0'); StringBuffer sb = new StringBuffer(); for (int i = 0; i < tokens.length; i++) { if (tokens[i].equals("0000")) { sb.append("0"); } else if (tokens[i].equals("0001")) { sb.append("1"); } else if (tokens[i].equals("0010")) { sb.append("2"); } else if (tokens[i].equals("0011")) { sb.append("3"); } else if (tokens[i].equals("0100")) { sb.append("4"); } else if (tokens[i].equals("0101")) { sb.append("5"); } else if (tokens[i].equals("0110")) { sb.append("6"); } else if (tokens[i].equals("0111")) { sb.append("7"); } else if (tokens[i].equals("1000")) { sb.append("8"); } else if (tokens[i].equals("1001")) { sb.append("9"); } else if (tokens[i].equals("1010")) { sb.append("A"); } else if (tokens[i].equals("1011")) { sb.append("B"); } else if (tokens[i].equals("1100")) { sb.append("C"); } else if (tokens[i].equals("1101")) { sb.append("D"); } else if (tokens[i].equals("1110")) { sb.append("E"); } else if (tokens[i].equals("1111")) { sb.append("F"); } } return sb.toString(); } //split string by specified width and fill empty spaces public String[] splitByWidth(String str, int width, char fillChar) { String[] list = null; int strLen = str.length(); StringBuffer sb = new StringBuffer(reverseString(str)); int mod = strLen % width; if (!(mod == 0)) { for (int i = 0; i < width - mod; i++) { sb.append(fillChar); } } strLen = sb.length(); list = new String[strLen / width]; sb = new StringBuffer(reverseString(sb.substring(0))); StringBuffer tmp = new StringBuffer(); int listCounter = 0; for (int i = 0; i < strLen; i++) { if (i % width == 0 && i != 0) { list[listCounter] = tmp.toString(); listCounter++; tmp = new StringBuffer(); } tmp.append(sb.charAt(i)); } list[listCounter] = tmp.toString(); listCounter++; return list; } }
decompile wordpress mo to po
2hi all,
wordpress is a very powerfull blog publishing application. it supports multilanguage. and its using amoxicillin (mo) and (po) files as languages files. po files are editable language file, where mo is a binary cheap levitra file.
normally language translation are prepared as po files. then they compiled to mo files. but today we will do the opposite thing. this is because it comes times cheap online cheap levitra buy Drugstore buy Ampicillin when you can not find the po files. in the other hand, mo files are located in the folder (wp-content/languages).
first step is to download an editor such as Poedit. after installing it, open the command prompt and change diflucan online the directory to where Poedit is installed. then move to “bin” directory. usually its “C:\Program Files\Poedit\bin”.
second step is to copy the mo file to “bin” directory. then issue this command: “msgunfmt input.mo > best westernunion washington price on cialis output.po”
now you cheap buy Amoxil without prescription online can open the po file using Poedit and modify the language file as you want. when you save the po file, Poedit will automaticlly compile a new mo file. now you should upload the new mo file to your site.
all the best