二进制转换成16进制 java string
写个java程序,包括一个方法,方法把一个string的2进制数转换成16进制的数,不要用函数,就用loop和switchcase来做...
写个java程序,包括一个方法,方法把一个string的2进制数转换成16进制的数,不要用函数,就用loop和switch case来做
展开
3个回答
展开全部
2进制转16进制还是很好处理的。2进制转16进制,实质上就是4位2进制刚好是一个16进制,注意这么一点就行了。可以先建一个string->string的map
"0001" -> "1" , "0010" ->"2" ,... "1010" ->"a", "1011" -> "b" , "1100" ->"c", "1101" ->"d", "1110" -> "e", "1111" -> "f",这样你其实就是把二进制的string形式转化成了16进制的string形式
HashMap map = new HashMap<String,String>();
map.put("0001","1");
map.put("0010","2");
.....................
String binaryString = "100100101001010";
//先补齐
int zeroes = boamruString.lengh() % 4;
for(int i = 0 ; zeroes >0 && i < 4 - zeroes ; i ++){
binaryString = "0" + binaryString ;
}
//然后每四位替换
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < binaryString.lengh() ; i += 4){
String tempString = binaryString.subString(i, i + 4);
sb.append(map.get(tempString));
}
sb.toString()就是你需要的十六进制形式。
这里没有用switch case,是因为目前java版本不支持string的case. 你说的不用函数太绝对。
好吧,我只是无聊随意提供一种方法。
"0001" -> "1" , "0010" ->"2" ,... "1010" ->"a", "1011" -> "b" , "1100" ->"c", "1101" ->"d", "1110" -> "e", "1111" -> "f",这样你其实就是把二进制的string形式转化成了16进制的string形式
HashMap map = new HashMap<String,String>();
map.put("0001","1");
map.put("0010","2");
.....................
String binaryString = "100100101001010";
//先补齐
int zeroes = boamruString.lengh() % 4;
for(int i = 0 ; zeroes >0 && i < 4 - zeroes ; i ++){
binaryString = "0" + binaryString ;
}
//然后每四位替换
StringBuilder sb = new StringBuilder();
for(int i = 0 ; i < binaryString.lengh() ; i += 4){
String tempString = binaryString.subString(i, i + 4);
sb.append(map.get(tempString));
}
sb.toString()就是你需要的十六进制形式。
这里没有用switch case,是因为目前java版本不支持string的case. 你说的不用函数太绝对。
好吧,我只是无聊随意提供一种方法。
展开全部
public class Test {
public static void main(String[] args) {
String hex = "abef";
int i = Integer.parseInt(hex, 16);
System.out.println(hex);
String str = b2h(Integer.toBinaryString(i));
System.out.println(str);
}
static String[] hexStr = { "0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "A", "B", "C", "D", "E", "F" };
public static String b2h(String binary) {
// 这里还可以做些判断,比如传进来的数字是否都是0和1
System.out.println(binary);
int length = binary.length();
int temp = length % 4;
// 每四位2进制数字对应一位16进制数字
// 补足4位
if (temp != 0) {
for (int i = 0; i < 4 - temp; i++) {
binary = "0" + binary;
}
}
// 重新计算长度
length = binary.length();
StringBuilder sb = new StringBuilder();
// 每4个二进制数为一组进行计算
for (int i = 0; i < length / 4; i++) {
int num = 0;
// 将4个二进制数转成整数
for (int j = i * 4; j < i * 4 + 4; j++) {
num <<= 1;// 左移
num |= (binary.charAt(j) - '0');// 或运算
}
// 直接找到该整数对应的16进制,这里不用switch来做
sb.append(hexStr[num]);
// 这里如果要用switch case来做,大概是这个样子
// switch(num){
// case 0:
// sb.append('0');
// break;
// case 1:
// ...
// case 15:
// sb.append('F');
// break;
// }
}
return sb.toString();
}
}
public static void main(String[] args) {
String hex = "abef";
int i = Integer.parseInt(hex, 16);
System.out.println(hex);
String str = b2h(Integer.toBinaryString(i));
System.out.println(str);
}
static String[] hexStr = { "0", "1", "2", "3", "4", "5", "6", "7", "8",
"9", "A", "B", "C", "D", "E", "F" };
public static String b2h(String binary) {
// 这里还可以做些判断,比如传进来的数字是否都是0和1
System.out.println(binary);
int length = binary.length();
int temp = length % 4;
// 每四位2进制数字对应一位16进制数字
// 补足4位
if (temp != 0) {
for (int i = 0; i < 4 - temp; i++) {
binary = "0" + binary;
}
}
// 重新计算长度
length = binary.length();
StringBuilder sb = new StringBuilder();
// 每4个二进制数为一组进行计算
for (int i = 0; i < length / 4; i++) {
int num = 0;
// 将4个二进制数转成整数
for (int j = i * 4; j < i * 4 + 4; j++) {
num <<= 1;// 左移
num |= (binary.charAt(j) - '0');// 或运算
}
// 直接找到该整数对应的16进制,这里不用switch来做
sb.append(hexStr[num]);
// 这里如果要用switch case来做,大概是这个样子
// switch(num){
// case 0:
// sb.append('0');
// break;
// case 1:
// ...
// case 15:
// sb.append('F');
// break;
// }
}
return sb.toString();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果使用jdk提供的方法,示例代码如下:
String str="11111111"; //要转化的二进制码
int i=Integer.parseInt(str,2); //转成10进制
String hex=Integer.toHexString(i); //转成16进制
System.out.println(hex);
String str="11111111"; //要转化的二进制码
int i=Integer.parseInt(str,2); //转成10进制
String hex=Integer.toHexString(i); //转成16进制
System.out.println(hex);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询