導航:首頁 > 源碼編譯 > java十進制轉十六進制演算法

java十進制轉十六進制演算法

發布時間:2024-09-18 18:02:29

A. 10進制轉化為16進制的演算法

方法 1 的 2:
手寫轉換

1
把十進制數除以16,保留余數部分。得到余數以後就不要再往下除得小數了。
2
寫下余數部分,在右下角標上16。比如剩下的是11,寫成B,右下方寫16。查查如何理解十六進制數來了解一下十六進制所用的符號。

3
把之前的整數商再除以16,得到余數部分,然後再在這個余數右下角標上16
4
重復以上步驟,直到得到一個小於16的商。每一次都把余數右下方標上16,注意我們也需要寫下最後得到的商(即小於16的商) ,並轉為十六進制。
5
把余數和最後的商從左到右按順序寫下,最右是商。得到的十六進制就是這個數,從右往左讀。比如讀作2F34,實際上的值是43F2。
方法 2 的 2:
用Windows計算器

1
開始菜單-附件-計算器,打開計算器。

2
點擊「查看」-「程序員

3
點擊「十進制」,輸入要轉換的數

4
點擊「十六進制」,自動得到轉換後的數
例子
256
將256轉換為十六進制, 256/16 = 16
因為沒有餘數,0作為余數。
16除以16,得到1,沒有餘數,再把0作為余數。
最後我們知道1/16 小於一,就將1 當做余數,因此得到001,轉過來變為 100。100就是256的十六進製表示!
2500
這個比較麻煩,2500除以16得到 156.25,余數小數(.25)乘以16,得到4 ,作為余數列表中的第一個。
156除以16得到 9.75,乘以16得到 12,加入余數列表,此時要記得轉為十六進制,即是C:4C
因為 9/16小於1,把9加入余數列表,得到 4C9,倒轉得到9C4。 9C4是2500的十六進製表示。

B. java中怎麼將10進制轉化成十六進制

1,可以手動計算先將10進制的數轉為二進制,二進制再轉為16進制


2,我們可以直接使用java api提供的方法直接轉換

int num = 14;

String hexNum = Integer.toHexString(num);

hexNum即為16進制的數

3,如圖

C. java基礎-十進制轉十六進制


Java基礎問題中,我們需要實現一個功能,即從序號1開始,每次請求遞增,並將這個遞增的序號轉換為十六進制的八位元組小頭位元組序。首先,理解需求要點:



要實現這個功能,我們需要分步操作:



  1. 將十進制的序號轉換為十六進制字元串,這里可以使用Java的內置方法,如Integer.toHexString(),但需要注意後續處理。

  2. 如果十六進制字元串超過一個位元組,需要拆分並調整高位和低位,確保小頭位元組序。

  3. 最後,在main方法中調用上述轉換方法,輸出轉換後的結果。


關於具體的String.format()方法的使用,我們將在後續的內容中詳細講解。


D. 用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中的,是對字元串做逆序處理的函數
//這里需要逆序的原因是因為得到的結果為該進制的逆序
}

E. java中怎麼將十進制轉換為十六進制

用除商取余法
用十進制數除以16 記錄下商和余數
然後繼續用商去除以16記錄下商和余數,直到商為0
最後將余數逆序排列就可以了
比如十進制數33轉為十六進制
33/16=2 餘1
2/16=0 餘2
結果就是0x 21(十六進制以0x開頭)

F. 用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十進制轉十六進制演算法相關的資料

熱點內容
程序員做外貿可以嗎 瀏覽:736
華邦單片機在線燒錄 瀏覽:166
如何檢測伺服器是否啟動好 瀏覽:286
巫山耐高溫加密人字形網帶 瀏覽:781
怎麼查看全球伺服器排名 瀏覽:845
pythonmysql預處理 瀏覽:696
艾優學安卓密碼忘了怎麼辦 瀏覽:914
單片機的摘要 瀏覽:699
編譯程序比較復雜所以執行率高嗎 瀏覽:855
中文文件夾怎麼改英文文件夾 瀏覽:811
dune源碼編譯 瀏覽:911
雲班課伺服器在哪 瀏覽:874
微信怎麼設不上加密鎖 瀏覽:188
雲伺服器並發評測 瀏覽:416
100g的文件壓縮 瀏覽:100
怎麼把圖片換成pdf 瀏覽:463
java編程習題集 瀏覽:820
linux查看服務http 瀏覽:546
阿里雲研究生伺服器 瀏覽:98
姐姐們的戀愛在哪個APP看 瀏覽:905