A. java 二進制轉換16進制
import java.util.Scanner;
public class Binary2Hex {
private static String hexStr = "0123456789ABCDEF";
/**
*
* @param bytes
* @return 將二進制轉換為十六進制字元輸出
*/
public static String BinaryToHexString(byte[] bytes){
String result = "";
String hex = "";
for(int i=0;i<bytes.length;i++){
//位元組高4位
hex = String.valueOf(hexStr.charAt((bytes[i]&0xF0)>>4));
//位元組低4位
hex += String.valueOf(hexStr.charAt(bytes[i]&0x0F));
result +=hex;
}
return result;
}
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
boolean flag = true;
while (flag) {
System.out.print("請輸入一個二進制字元串:");
String str = sca.next();
System.out.println();
System.out.println("您輸入的是字元串的十六進制為:"+BinaryToHexString(str.getBytes()));
System.out.print("是否繼續轉化(如果不繼續請輸入「exit」,繼續的話輸入任意字元):");
String _str = sca.next();
if (_str.equalsIgnoreCase("exit")) {
flag = false;
}
}
}
}
B. 使用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
*/
}
}
C. java字元串轉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());
這樣? 不過我怎麼轉都得不到你要說的值專。。屬。
D. 可以把java中十進制數用代碼直接轉為16進制嗎
//當然可以:我分兩步講解,兩種方法,一個比較簡單,利用系統API,一個講原理稍微復雜一點!
importjava.util.Scanner;
publicclassTohex
{
//錄入數字用!
privatestaticScannersc=newScanner(System.in);
//容器,存放轉好的數字,也可以不用,也可以用數組!
privatestaticStringBuffersb;
publicstaticvoidmain(String[]args)
{
/*
Integer,這個類功能很強大,是Java提供的,想用可以查詢一下;
特點就是簡單拿來就用,新手不建議使用,搞懂進制轉換原理以後在去使用API事半功倍!
*/
System.out.println(" ==========裝16進制!========== 系統API(Integer)演示: ");
init();
}
//方法1,用系統API
privatestaticvoidinit()
{
//十進制!
inta=125454;
//轉換過程16進制!
Stringhex=Integer.toHexString(a);
System.out.println(a+"十六進制="+hex+" ------------------------------------ 自定義測試: ");
input();
}
//方法2:自己動手轉換,了解轉換原理!
privatestaticvoidinput()
{
while(true)
{
System.out.println("輸入被轉數字: ");
inta=sc.nextInt();
System.out.println("輸入想轉的進制:暫時支持2,8,16進制");
intb=sc.nextInt();
ToHex(a,b);
}
}
//轉換過程!
privatestaticvoidToHex(intx,inty)//a是要轉數字,b是進制!
{
sb=newStringBuffer();
inta=x,b=0,c=0;
switch(y)
{
case2:b=1;c=1;
break;
case8:b=7;c=3;
break;
case16:b=15;c=4;
break;
default:break;
}
while(a>0)
{
inttem=a&b;
Strings=tem>9?((char)(tem-10+'A'))+"":tem+"";
sb.append(s);
a=a>>>c;
}
print(sb);//傳遞列印!
}
//列印!
privatestaticvoidprint(StringBuffersb)
{
System.out.println(" 結果演示:"+sb.reverse()+" 請繼續輸入測試--->> ");
sb=null;
}
}
E. 用JAVA棧的方法實現十進制轉十六進制
看到這道題目想到了三個方法,依次給你列出(棧的方式,遞歸,數組)
棧的方式:
//思路:將十進制數(number)除以R取余,讓取得的余數(number Mod R )進棧,讓十進制數變為
number/R,重復上述過程,直到number等於0為止,然後依次從棧中取出數據即為所求,直到棧為空,下面是實現的代碼:
#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 80
typedef struct
{//棧的數據結構,採用數組
char data[MAX_SIZE];
int top;
}stack;
int isfull(stack s)
{//判斷棧是否已滿
return (++s.top==MAX_SIZE);
}
int isempty(stack s)
{//判斷棧為空
return s.top==-1;
}
void push(stack * s,char in_data)
{//進棧
if(isfull(*s))
{
printf("棧已滿,不能執行操作!\n");
exit(1);
}
s->data[++s->top]=in_data;
}
void pop(stack *s)
{//出棧
if(isempty(*s))
{
printf("棧已空,不能執行操作!\n");
exit(1);
}
s->top--;
}
char top_value(stack *s)
{//取棧頂元素
if(isempty(*s))
{
printf("棧已空,不能執行操作!\n");
exit(1);
}
return s->data[s->top];
}
int main(int argc,char** argv)
{
int number;
stack result;
result.top=-1;
int r_range;
printf("輸入轉換的數據和對應的進制:");
scanf("%d%d",&number,&r_range);
printf("%d對應的%d進制為:",number,r_range);
while(number!=0)
{
char input;
if(number%r_range>=10)
input=((number%r_range)-10)+'a';
else
input=((number%r_range)+'0');
push(&result,input);
number=number/r_range;
}
while(!isempty(result))
{
putchar(top_value(&result));
pop(&result);
}
return 0;
}
====================================================================
遞歸的方式:定義一個輸出字元串,讓十進制數(number)除以要轉換的進制R 若結果不為0,則繼續執行前述操作,直到得到除的結果為零,此時number除以R取其餘數,將其結果(number Mod R)映射到指定的輸出字元數組中下標輸出即為結果(描述的不是很好,你看代碼吧)
//用這種方法也比較可以
#include<stdio.h>
void ten_to_any(int number,int range_t)
{//遞歸實現
char text[]="0123456789abcdef";
int k=number/range_t;
if(k)
ten_to_any(k,range_t);
putchar(text[number%range_t]);
}
int main()
{
int number,r_range;
while(1)
{
printf("\n輸入轉換的數據,和對應進制:");
scanf("%d%d",&number,&r_range);
if(r_range>16||r_range<2)
{
printf("超出了范圍!");
break;
}
printf("%d對應的%d進制為:",number,r_range);
ten_to_any(number,r_range);
}
return 0;
}
//採用數組的形式
這是我上次回答別人的
用一個字元串保存轉換的結果(str[80])假設十進制數為number,轉換的進制為digits,則將numbers%digits(根據余數的情況做相應處理)結果保存在字元串str中,將numbers變為numbers/digits;直到numbers為零。得到的結果為逆序,需要將其倒轉,倒轉後即為所求。
//-----------c語言實現10進制轉2~16進制
#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16進制則直接退出
return ;
while(number)
{
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}
}
str[i]='\0';
strrev(str);//strrev函數定義在string.h中的,是對字元串做逆序處理的函數
//這里需要逆序的原因是因為得到的結果為該進制的逆序
}
F. java中怎麼將10進制轉化成十六進制
Scanner sc = new Scanner(System.in);
System.out.println("請出入一個十進制數");
int x = sc.nextInt();
System.out.println(x+"的十六進制結果是:"+Integer.toHexString(x));
G. 怎麼用java語句從鍵盤上輸入一個十六進制數
你輸入就是了,接收要按String接收、再Interget.parseInt( num, 16 )轉換一下——處理一下異常。
H. java 10進制轉16進制
移位的辦法你不知道怎麼寫是么?
String toHexString (int num)
{
char [] hexStr = new char [8] ;
for (int i = 0 ; i < 4 ; i ++)
{
// 取低 4 bits
hexStr [7 - i] = getHexChar (num & 0x0F) ;
// 右移4 Bits ;
num = num >> 4 ;
}
return new String (hexStr) ;
}
char getHexChar1 (int num)
{
if (num < 0 || num >= 16)
num = num % 16 ;
if (num < 10)
return '0' + num ;
else
return 'A' + num - 10 ;
}
static char [] HEX_DIGITS_LIST = new char [] {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'} ;
char getHexChar2 (int num)
{
if (num < 0 || num >= 16)
num = num % 16 ;
return HEX_DIGITS_LIST [num] ;
}
char getHexChar3 (int num)
{
if (num < 0 || num >= 16)
num = num % 16 ;
return Character.forDigit (num) ;
}
I. java中如何將byte[]裡面的數據轉換成十六進制
方法如下:
/* *
* Convert byte[] to hex string.這里我們可以將byte轉換成int,然後利用Integer.toHexString(int)
*來轉換成16進制字元串。
* @param src byte[] data
* @return hex string
*/
public static String bytesToHexString(byte[] src){
StringBuilder stringBuilder = new StringBuilder("");
if (src == null || src.length <= 0) {
return null;
}
for (int i = 0; i < src.length; i++) {
int v = src[i] & 0xFF;
String hv = Integer.toHexString(v);
if (hv.length() < 2) {
stringBuilder.append(0);
}
stringBuilder.append(hv);
}
return stringBuilder.toString();
}
此方法能將byte[]轉化成16進制字元串,