重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
//当然可以:我分两步讲解,两种方法,一个比较简单,利用系统API,一个讲原理稍微复杂一点!
湖州网站制作公司哪家好,找创新互联公司!从网页设计、网站建设、微信开发、APP开发、自适应网站建设等网站项目制作,到程序开发,运营维护。创新互联公司成立于2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联公司。
import java.util.Scanner;
public class Tohex
{
//录入数字用!
private static Scanner sc=new Scanner(System.in);
//容器,存放转好的数字,也可以不用,也可以用数组!
private static StringBuffer sb;
public static void main(String[] args)
{
/*
Integer,这个类功能很强大,是Java提供的,想用可以查询一下;
特点就是简单拿来就用,新手不建议使用,搞懂进制转换原理以后在去使用API事半功倍!
*/
System.out.println("\n\t\t==========装16进制!==========\n\n系统API(Integer)演示:\n");
init();
}
//方法1,用系统API
private static void init()
{
//十进制!
int a=125454;
//转换过程16进制!
String hex=Integer.toHexString(a);
System.out.println(a+" 十六进制= "+hex+"\n------------------------------------\n\t\t自定义测试:\n");
input();
}
//方法2:自己动手转换,了解转换原理!
private static void input()
{
while(true)
{
System.out.println("输入被转数字:\n");
int a=sc.nextInt();
System.out.println("输入想转的进制:暂时支持2,8,16进制");
int b=sc.nextInt();
ToHex(a,b);
}
}
//转换过程!
private static void ToHex(int x,int y)//a是要转数字,b是进制!
{
sb=new StringBuffer();
int a=x,b=0,c=0;
switch(y)
{
case 2:b=1;c=1;
break;
case 8:b=7;c=3;
break;
case 16:b=15;c=4;
break;
default :break;
}
while(a0)
{
int tem=ab;
String s= tem9?((char)(tem-10+'A'))+"":tem+"";
sb.append(s);
a=ac;
}
print(sb);//传递打印!
}
//打印!
private static void print(StringBuffer sb)
{
System.out.println("\n结果演示:"+sb.reverse()+"\n请继续输入测试---\n");
sb=null;
}
}
算法比较复杂,建议直接使用系统内置的方法
int num = 1000;
String hexStr = Integer.toHexString(num);
直接看源码,可能你需要的只是简单的,需要的话我可以给你写个简单的算法,只支持正数,应该还不能太大的
public static void main(String[] args) {
int num = 5000;
String hexStr = Integer.toHexString(num);
System.out.println(hexStr);
StringBuilder builder = new StringBuilder();
int2Hex(num, builder);
System.out.println(builder.reverse());
}
static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
public static void int2Hex(int num, StringBuilder builder) {
if (num 0) {
return;
}
if (num 16) {
builder.append(hexChar[num]);
return;
}
int temp = num % 16;
int index = num / 16;
builder.append(hexChar[temp]);
int2Hex(index, builder);
}
public class test {
public static void main(String[] args) {
long f = Integer.parseInt("8FFFFFF", 16);//把16进制转化成10进制
long t = 1024*1024;
double m = f/(double)t;
System.out.println(m);
}
}
我计算的结果是:143.99999904632568
我大体估算了下也是
8FFFFFF=8*16^6+15*(16^5+16^4+16^3+16^2+16+1)
=2^27+15*(2^20+2^16+2^12+2^4+1)
=2^27+(2^4-1)*(2^20+2^16+2^12+2^4+1)
=2^27+2^24+2^20+2^16+2^8+2^4-(2^20+2^16+2^12+2^4+1)
=2^27+2^24+2^19+2^15-2^12+2^8-1
=2^27+2^24+2^19+2^12*(2^3-1)+2^8-1
=2^27+2^24+2^19+2^12*7+2^8-1
t=2^27+2^24+2^19+2^12*7+2^8-1
1MB=2^10KB=2^20b
m=t/2^20=2^7+2^4+2^(-1)+2^(-5)=16*9+0.5=144.5
想不到你是一个java高手,你写的程序我没 有遇见过,是文件的读写吧?
1、写转换函数是必须的,目前Jdk中无现有类。
2、在不同的字符编码当中,汉字的对应的数值或者说编码值不一样,像GBK、Unicode肯定是不一样的。以Java默认的Unicode为例说明问题。
3、 一,得到字符串,
二,遍历每个字符,用char来接收,实为int值,或直接用int也可以。
三,Integer.toHexString(每个字符对应的int值);
四,前缀加个“0x”就可以了。
4、如果是其它类型的话,找到对应的字符和数值对应表就可以了。
不知可否解决问题了。
这个问题其实很简单。你只要把string作为16进制转成int,运算,得到结果转成16进制显示就可以了。提供你这样一个思路。
过程如下
String
str1
=
"FF98";//取值
textFiled1.getText();
String
str2
=
"EFA7";//取值
textFiled1.getText();
//转化
int
a
=
convertToInt(str1);
int
b
=
convertToInt(str2);
//运算(例如加法)
int
c
=
a+b;
String
result
=
convertToHex(c);
//显示
textField1.setText(result);
其中
int
convertToInt(String
s){
return
Integer.parseInt(s,16);
}
String
convertToHex(int
i){
return
Integer.toHexString(i);
}
给分吧。
在main方法中直接调用即可,代码如下:
public static void main(String[] args) {
HexToDec("1e6f");
}
/**
* 将十六进制的字符串转化为十进制的数值
*/
public static long HexToDec(String hexStr) {
MapString, Integer hexMap = prepareDate(); // 先准备对应关系数据
int length = hexStr.length();
long result = 0L; // 保存最终的结果
for (int i = 0; i length; i++) {
result += hexMap.get(hexStr.subSequence(i, i + 1)) * Math.pow(16, length - 1 - i);
}
System.out.println("hexStr=" + hexStr + ",result=" + result);
return result;
}
/**
* 准备十六进制字符对应关系。如("1",1)...("A",10),("B",11)
*/
private static HashMapString, Integer prepareDate() {
HashMapString, Integer hashMap = new HashMapString, Integer();
for (int i = 1; i = 9; i++) {
hashMap.put(i + "", i);
}
hashMap.put("a", 10);
hashMap.put("b", 11);
hashMap.put("c", 12);
hashMap.put("d", 13);
hashMap.put("e", 14);
hashMap.put("f", 15);
return hashMap;
}