//當(dāng)然可以:我分兩步講解,兩種方法,一個(gè)比較簡單,利用系統(tǒng)API,一個(gè)講原理稍微復(fù)雜一點(diǎn)!
湖州網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司成立于2013年到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
import?java.util.Scanner;
public?class?Tohex?
{
//錄入數(shù)字用!
private?static?Scanner?sc=new?Scanner(System.in);
//容器,存放轉(zhuǎn)好的數(shù)字,也可以不用,也可以用數(shù)組!
private?static?StringBuffer?sb;
public?static?void?main(String[]?args)?
{
/*
?Integer,這個(gè)類功能很強(qiáng)大,是Java提供的,想用可以查詢一下;
?特點(diǎn)就是簡單拿來就用,新手不建議使用,搞懂進(jìn)制轉(zhuǎn)換原理以后在去使用API事半功倍!
*/
System.out.println("\n\t\t==========裝16進(jìn)制!==========\n\n系統(tǒng)API(Integer)演示:\n");
init();
}
//方法1,用系統(tǒng)API
private?static?void?init()
{
//十進(jìn)制!
int?a=125454;
//轉(zhuǎn)換過程16進(jìn)制!
String?hex=Integer.toHexString(a);
System.out.println(a+"?十六進(jìn)制=?"+hex+"\n------------------------------------\n\t\t自定義測試:\n");
input();
}
//方法2:自己動手轉(zhuǎn)換,了解轉(zhuǎn)換原理!
private?static?void?input()
{
while(true)
{
System.out.println("輸入被轉(zhuǎn)數(shù)字:\n");
int?a=sc.nextInt();
System.out.println("輸入想轉(zhuǎn)的進(jìn)制:暫時(shí)支持2,8,16進(jìn)制");
int?b=sc.nextInt();
ToHex(a,b);
}
}
//轉(zhuǎn)換過程!
private?static?void?ToHex(int?x,int?y)//a是要轉(zhuǎn)數(shù)字,b是進(jìn)制!
{
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結(jié)果演示:"+sb.reverse()+"\n請繼續(xù)輸入測試---\n");
sb=null;
}
}
算法比較復(fù)雜,建議直接使用系統(tǒng)內(nèi)置的方法
int?num?=?1000;
String?hexStr?=?Integer.toHexString(num);
直接看源碼,可能你需要的只是簡單的,需要的話我可以給你寫個(gè)簡單的算法,只支持正數(shù),應(yīng)該還不能太大的
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進(jìn)制轉(zhuǎn)化成10進(jìn)制
long?t?=?1024*1024;
double?m?=?f/(double)t;
System.out.println(m);
}
}
我計(jì)算的結(jié)果是: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
想不到你是一個(gè)java高手,你寫的程序我沒 有遇見過,是文件的讀寫吧?
1、寫轉(zhuǎn)換函數(shù)是必須的,目前Jdk中無現(xiàn)有類。
2、在不同的字符編碼當(dāng)中,漢字的對應(yīng)的數(shù)值或者說編碼值不一樣,像GBK、Unicode肯定是不一樣的。以Java默認(rèn)的Unicode為例說明問題。
3、 一,得到字符串,
二,遍歷每個(gè)字符,用char來接收,實(shí)為int值,或直接用int也可以。
三,Integer.toHexString(每個(gè)字符對應(yīng)的int值);
四,前綴加個(gè)“0x”就可以了。
4、如果是其它類型的話,找到對應(yīng)的字符和數(shù)值對應(yīng)表就可以了。
不知可否解決問題了。
這個(gè)問題其實(shí)很簡單。你只要把string作為16進(jìn)制轉(zhuǎn)成int,運(yùn)算,得到結(jié)果轉(zhuǎn)成16進(jìn)制顯示就可以了。提供你這樣一個(gè)思路。
過程如下
String
str1
=
"FF98";//取值
textFiled1.getText();
String
str2
=
"EFA7";//取值
textFiled1.getText();
//轉(zhuǎn)化
int
a
=
convertToInt(str1);
int
b
=
convertToInt(str2);
//運(yùn)算(例如加法)
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方法中直接調(diào)用即可,代碼如下:
public static void main(String[] args) {
HexToDec("1e6f");
}
/**
* 將十六進(jìn)制的字符串轉(zhuǎn)化為十進(jìn)制的數(shù)值
*/
public static long HexToDec(String hexStr) {
MapString, Integer hexMap = prepareDate(); // 先準(zhǔn)備對應(yīng)關(guān)系數(shù)據(jù)
int length = hexStr.length();
long result = 0L; // 保存最終的結(jié)果
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;
}
/**
* 準(zhǔn)備十六進(jìn)制字符對應(yīng)關(guān)系。如("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;
}
網(wǎng)頁名稱:java16進(jìn)制代碼的簡單介紹
轉(zhuǎn)載注明:http://muchs.cn/article48/hjsiep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、面包屑導(dǎo)航、軟件開發(fā)、品牌網(wǎng)站建設(shè)、網(wǎng)站改版、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)