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開始,每次請求遞增,並將這個遞增的序號轉換為十六進制的八位元組小頭位元組序。首先,理解需求要點:
要實現這個功能,我們需要分步操作:
關於具體的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));
}
}