public class Tools extends TestCase
{
/** 10进制转16进制 */
public static String algorismToHex(String source)
{
String binary = algorismToBinary(source);
int len = binary.length();
StringBuilder builder = new StringBuilder();
for (int i = len; i >= 4; i = i - 4)
{
builder.append(change(binary.substring(i - 4, i)));
}
if (len % 4 != 0)
{
builder.append(change(binary.substring(0, len % 4)));
}
return builder.append("x0").reverse().toString();
}
public static void main(String[] args)
{
System.out.println(algorismToHex("100"));
System.out.println(algorismToHex("29063"));
System.out.println(algorismToHex("29064"));
System.out.println(algorismToHex("29092"));
}
public static String change(String s)
{
String str = binaryToAlgorism(s);
if ("10".equals(str))
{
return "a";
}
else if ("11".equals(str))
{
return "b";
}
else if ("12".equals(str))
{
return "c";
}
else if ("13".equals(str))
{
return "d";
}
else if ("14".equals(str))
{
return "e";
}
else if ("15".equals(str))
{
return "f";
}
else
{
return str;
}
}
/** 十进制转二进制 */
public static String algorismToBinary(String source)
{
Integer in = Integer.valueOf(source);
StringBuilder builder = new StringBuilder();
while (in != 0)
{
builder.append(in % 2 == 0 ? "0" : "1");
in = in / 2;
}
return builder.reverse().toString();
}
/** 二进制转十进制 */
public static String binaryToAlgorism(String binary)
{
int count = 0;
int length = binary.length();
for (int i = length - 1; i >= 0; i--)
{
int num = Integer.valueOf(new String(new char[] {binary.charAt(i)}));
if (num == 1)
count += show(length - i - 1);
}
return String.valueOf(count);
}
public void testAlgorismToBinary()
{
String str = "7817";
Integer in = Integer.valueOf(str);
StringBuilder builder = new StringBuilder();
while (in != 0)
{
builder.append(in % 2 == 0 ? "0" : "1");
in = in / 2;
}
String s = builder.reverse().toString();
int count = 0;
int length = s.length();
for (int i = length - 1; i >= 0; i--)
{
int num = Integer.valueOf(new String(new char[] {s.charAt(i)}));
if (num == 1)
count += show(length - i - 1);
}
System.out.println(count);
assertEquals(str, String.valueOf(count));
}
public static int show(int i)
{
int count = 1;
for (int k = 0; k < i; k++)
{
count = count * 2;
}
return count;
}
}