❶ 用java將十進制轉換成十六進制
1、用Integer.toHexString方法即可將十進制裝成十六進制。
package com.test;
public class Test {
public static void main(String[] args) {
int i = 123;
System.out.println(Integer.toHexString(i));
}
}
❷ 在java中如何輸入一個char型字元。
方法一:
Scanner cin=new Scanner(System.in);
String s=cin.nextLine();
char ans=s.charAt(0);
這樣即可獲取一個字元。
方法二:
byte[] b=new byte[2];
try{
System.in.read(b)
}catch(Exception e){}
char ans=new String(b).charAt(0);
這樣即可獲取一個字元
❸ java 怎麼將char轉化為16進制
String str="鯨";
char[] chars = "0123456789ABCDEF".toCharArray();
StringBuilder sb = new StringBuilder("");
byte[] bs = str.getBytes();
int bit;
for (int i = 0; i < bs.length; i++)
{
bit = (bs[i] & 0x0f0) >> 4;
sb.append(chars[bit]);
bit = bs[i] & 0x0f;
sb.append(chars[bit]);
sb.append(' ');
}
System.out.println(sb.toString().trim());
❹ 解釋java中 (char) (c ^ 0x20) 的意思
位運算是CPU直接支持,效率最高的
char 類型,在java里也是由數字組成的
0x20是16進制20的表示法,轉換成10進制是等於 32
c ^ 32 這是位運算(異或運算) 同位為0,結果才為0,否則都為1
可能這個移位後,剛好等於大寫吧
❺ 使用java,如何將十六進制數D6CD2F01轉換為十進制數19910102
import java.util.Scanner;
public class test2{
public static void main(String [] args){
Scanner cin=new Scanner(System.in);
String num1="D6CD2F01";//"D6CD2F01";
//long n=Long.parseLong(num1,16);//由16進制轉化為10進制(兩個都行,1:返回long;2:返回Long)
long n=Long.valueOf(num1,16);
System.out.print(n);
/*
D6CD2F01的十進制數已經超過int的范圍了
3603771137
*/
}
}
❻ java寫的十六進制轉化為十進制,類型轉換char->int出錯
十六進制轉換成十進制,必須先把十六進制轉換成二進制,給你看一下我寫的代碼:
import java.util.Scanner;
public class test{
//判斷一個字元串是否是一個十六進制的字元串
private static boolean isXNumber(String str){
int count = 0;
str = str.toUpperCase(); //如果輸入小寫字元就轉成大寫字母
for (int i = 0; i < str.length(); i++) {
if (((int)str.substring(i, i+1).charAt(0)>=48&&(int)str.substring(i, i+1).charAt(0)<=57)||
((int)str.substring(i, i+1).charAt(0)>=65&&(int)str.substring(i, i+1).charAt(0)<=70)) {
count++;
}
}
if (count==str.length()) {
return true;
}else {
return false;
}
}
//將十六進制字元串轉成二進制字元串
private static String XNumberToBNumber(String str){
String temp="";
if (isXNumber(str)==true) {
for (int i = 0; i < str.length(); i++) {
if (str.substring(i, i+1).charAt(0)=='0') {
temp+="0000";
}else if (str.substring(i, i+1).charAt(0)=='1') {
temp+="0001";
}else if (str.substring(i, i+1).charAt(0)=='2') {
temp+="0010";
}else if (str.substring(i, i+1).charAt(0)=='3') {
temp+="0011";
}else if (str.substring(i, i+1).charAt(0)=='4') {
temp+="0100";
}else if (str.substring(i, i+1).charAt(0)=='5') {
temp+="0101";
}else if (str.substring(i, i+1).charAt(0)=='6') {
temp+="0110";
}else if (str.substring(i, i+1).charAt(0)=='7') {
temp+="0111";
}else if (str.substring(i, i+1).charAt(0)=='8') {
temp+="1000";
}else if (str.substring(i, i+1).charAt(0)=='9') {
temp+="1001";
}else if (str.substring(i, i+1).charAt(0)=='A') {
temp+="1010";
}else if (str.substring(i, i+1).charAt(0)=='B') {
temp+="1011";
}else if (str.substring(i, i+1).charAt(0)=='C') {
temp+="1100";
}else if (str.substring(i, i+1).charAt(0)=='D') {
temp+="1101";
}else if (str.substring(i, i+1).charAt(0)=='E') {
temp+="1110";
}else if (str.substring(i, i+1).charAt(0)=='F') {
temp+="1111";
}}
}
return temp;
}
public static void main(String[] args) {
System.out.print("請輸入一個十六進制數:");
String XNumner= new Scanner(System.in).next();
if (isXNumber(XNumner)==false) {
System.out.println("你輸入的不是一個十六進制數!");
}else{
int sum = 0;
int count = XNumberToBNumber(XNumner).length() - 1;
for (int i = 0; i < XNumberToBNumber(XNumner).length(); i++) {
sum+=(Integer.parseInt(XNumberToBNumber(XNumner).substring(i,i+1))*(int)Math.pow(2, count));
count--;
}
System.out.print("十六進制數:"+XNumner+",對應的十進制數是:"+sum);
}
}
}
❼ 怎麼用java讀寫16進制的數
public static int hexToDec(String sn) {
if (null == sn && 0 == sn.trim().length())
throw new IllegalArgumentException("接收的參數 「" + sn + "」 不是十六進製表示形式!");
final String P = "0x";
if (sn.toLowerCase().startsWith(P)) {
final String regex = "[^\\da-fA-F]";
int i = Regexutils.matcheRegexp(sn.substring(2), regex, false);
if (0 != i)
throw new IllegalArgumentException("接收的參數 「" + sn
+ "」 不是十六進製表示形式!");
else {
char[] cs = sn.substring(2).toUpperCase().toCharArray();
char c;
for (int j = 0; j < cs.length; j++) {
c = cs[j];
i += toDec(c, (cs.length - j - 1));
}
return i;
}
}
return 0;
}
private static int toDec(char c, int i) {
final double N = 16.0;
int n = getNum(c);
int r = (int) (n * Math.pow(N, (double) i));
return r;
}
private static int getNum(char c) {
// 字元F轉換成為數字為70
if ((int) c > 70)
return 0;
int i = 0;
switch (c) {
case ''A'':
i = 10;
break;
case ''B'':
i = 11;
break;
case ''C'':
i = 12;
break;
case ''D'':
i = 13;
break;
case ''E'':
i = 14;
break;
case ''F'':
i = 15;
break;
case ''a'':
i = 10;
break;
case ''b'':
i = 11;
break;
case ''c'':
i = 12;
break;
case ''d'':
i = 13;
break;
case ''e'':
i = 14;
break;
case ''f'':
i = 15;
break;
}
if (0 == i) {
// 字元0轉換成為數字為48
return (int) c - 48;
} else
return i;
}
❽ java中如何聲明一個十六進制的字元串,或者說,怎麼發送一個十六進制數據
先弄清楚:
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
例:
char x = '我';
String str = "我";
byte[] bytes = str.getBytes(); //我想不明白,為什麼這里要佔用3個byte呢? 3個byte一共是3*8=24位;
那麼char x 怎麼又放得下?因為char是16位的啊??
原因:
byte[] bytes = str.getBytes();之後是3個位元組,這里和前面的概念不一樣。
java是用unicode來表示字元,"我"這個中文字元的unicode就是2個位元組。 String.getBytes(encoding)方法是獲取指定編碼的byte數組表示,通常gbk/gb2312是2個位元組,utf-8是3個位元組。如果不指定encoding則取系統默認的encoding。
❾ JAVA 16進制數的問題
如果只是為了實現這個效果 java自帶的類中已經有幫你實現好的方法 你直接調用就行了
Integer.toHexString(int i)將10進制轉16進制
如果是為了自己實現來查看原理
需要知道計算機中的數字都是按2進制存儲的
int類型的數字佔32個bit位
具體實現代碼
//這個代碼是通用的 num就是你要轉化的數字 base是參與位運算的數字 offset是一次運算//// //後右移位數,要實現你的需求 只需要在調用時 把base設置為15 offset設置為4就好了
public static String trans(int num,int base,int offset ){
if(num==0){
return "0";
}
char[] arr={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};//定義對應表
char[] res=new char[32];//Int類型32位bit
int pose=res.length;//當前所在數組位置指針
while(num!=0){
int temp=num & base;//最低位與運算
res[--pose]=arr[temp];//保存轉換後的低位
num=num >>> offset;//次低位移動到最低位
}
String st=new String(res);
return st.trim();
}