java-Java 十进制转十六进制?

问题描述

Java 十进制转十六进制?

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出
1E

解决方案

蓝桥杯题目。
如果是调用封装好的方法:

 import java.util.Scanner;  

public class Main{  

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        long number = sc.nextLong();
        String arry = Long.toHexString(number);//十进制转十六进制
        arry = arry.toUpperCase();
        System.out.println(arry);
    }
}

如果自己实现的话,通过建立StringBuilder对象 和append()方法,连接每位16进制数,其中获取到的16进制字符串为逆序的16进制字符串,需要进行逆序操作,最终转换为16进制字符串:

     import java.util.Scanner;  

    public class Main{  

        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            long number = sc.nextLong();
            int remainder = 0;
            int len;
            StringBuilder st = new StringBuilder();
            do{
                remainder = (int) (number % 16);
                number = number / 16;
                switch (remainder) {
                case 10:
                    st.append("A");
                    break;
                case 11:
                    st.append("B");
                    break;
                case 12:
                    st.append("C");
                    break;
                case 13:
                    st.append("D");
                    break;
                case 14:
                    st.append("E");
                    break;
                case 15:
                    st.append("F");
                    break;
                default:
                    st.append(remainder);
                    break;
                }
            }while(number >= 1);
            len = st.toString().length();
            char [] arry = st.toString().toCharArray();
            st = new StringBuilder();
            for(int i = len - 1; i >= 0; i--){
                st.append(arry[i]);
            }
            System.out.println(st);
        }
    }

解决方案二:

 给一个自己实现的方法
String toHex(int n)
{
    String s = "";
        while (n > 0)
        {
            int x = n % 16;
                if (x >= 10) s = ('A' + x - 10).toString() + s; else s = ('0' + x).toString() + s;
                n = n / 16;
        }
        return s;
}

解决方案三:

可以直接看jdk的源码实现方法,Integer类封装了进制转换方法,Integer.toHexString。

解决方案四:

package com.wxh.a;
import java.util.Scanner;
public class Main01 {
public static void main(String[] args) {
Scanner src=new Scanner(System.in);
String n=src.nextLine();
System.out.println(Integer.toHexString(n));
}
}
有没有普通的写法,不用integer封装类的方法?

解决方案五:

不能用系统的,自己实现的方法就是取 Int 数的每位数,进行转换。

 String IntToHex(int n)
{
    String flag = "";
    if(n < 0)   \ 考虑负数的情况
    {
        n = -n;
        flag = "-";
    }
  String s = "";
  while(n > 0)
  {
    int x = n % 16;
    if(x >= 10)
    {
        s = ('A' + x - 10).toString() + s;
    }
    else
    {
        s = ('0' + x).toString() + s;
    }
    n = n / 16;
    }

    return flag + s;
}
时间: 2024-10-31 22:47:39

java-Java 十进制转十六进制?的相关文章

16进制生成文件-java 十进制转十六进制字节,高位在后,地位在前

问题描述 java 十进制转十六进制字节,高位在后,地位在前 把10进制的数转换为16进制字节,并高位在前,地位在后,怎么做? 求指点迷津啊~~~~~ 例如:十进制(1000)转十六进制为(3E8),高位在前,地位在后为:(E8 03). 解决方案 decToHex(1000); //This is E803 public static String decToHex(int dec) { String hex = ""; while(dec != 0) { String h = In

Java实现十进制整数的算术运算及二进制显示,并用图形用户界面设计

问题描述 Java实现十进制整数的算术运算及二进制显示,并用图形用户界面设计 大神们,如何用Java实现十进制整数的算术运算及二进制显示,并用图形用户界面设计 解决方案 http://zhidao.baidu.com/link?url=LkPvJgKNKeCmX2nFu5mxVswb90KcV6D5ReyX3sxrGKF-H1TG3QNrhb6UYwum1ok9jNpV8wGnDkp3YNDXlMMn1_ 解决方案二: 你的意思是实现一个计算器吗?

浅谈二进制、十进制、十六进制、字符串之间的相互转换_java

1. 字节转10进制 直接使用(int)类型转换. /* * 字节转10进制 */ public static int byte2Int(byte b){ int r = (int) b; return r; } 2. 10进制转字节 直接使用(byte)类型转换. /* * 10进制转字节 */ public static byte int2Byte(int i){ byte r = (byte) i; return r; } 3. 字节数组转16进制字符串 对每一个字节,先和0xFF做与运算

C# 二进制,十进制,十六进制 互转

C# 二进制,十进制,十六进制 互转 //十进制转二进制Console.WriteLine(Convert.ToString(69, 2));//十进制转八进制Console.WriteLine(Convert.ToString(69, 8));//十进制转十六进制Console.WriteLine(Convert.ToString(69, 16)); //二进制转十进制Console.WriteLine(Convert.ToInt32("100111101″, 2));//八进制转十进制Con

python-如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量

问题描述 如何 Python转JAVA java将32x32的二进制图像文本矩阵转换成1x1024的向量 1C #文本向量化 32x32 -> 1x1024def img2vector(filename): returnVect = [] fr = open(filename) for i in range(32): lineStr = fr.readline() for j in range(32): returnVect.append(int(lineStr[j])) return retu

Oracle中的二进制、八进制、十进制、十六进制相互转换函数

原文:Oracle中的二进制.八进制.十进制.十六进制相互转换函数 Oracle中的二进制.八进制.十进制.十六进制相互转换函数   今天在网上看到一篇关于在oracle中对各种进制数进行转换的帖子,觉得不错,也比较全面,几乎涵盖了经常用到的所有转换.转过来学习一下,也方便以后查询. ================================================================================== 大家经常遇到进制转换的问题,网上搜到的转换只是部

Python中不同进制互相转换(二进制、八进制、十进制和十六进制)_python

在我的印象里面进制互相转换确实是很常见的问题,所以在Python中,自然也少不了把下面这些代码收为util. 这是从网上搜索的一篇也的还可以的Python进制转换,经过验证可以使用.下面贴出它的实现代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # 2/10/16 base trans. wrote by srcdog on 20th, April, 2009 # ld elements in base 2, 10, 16. import os

整理C# 二进制,十进制,十六进制 互转_C#教程

//十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(69, 8)); //十进制转十六进制 Console.WriteLine(Convert.ToString(69, 16)); //二进制转十进制 Console.WriteLine(Convert.ToInt32("100111101″, 2)); //八进制转十进制 Console.WriteL

ORACLE十进制与十六进制的转换

ORACLE十进制与十六进制的转换   十进制与十六进制的转换8i以上版本: 十进制-->十六进制 select to_char(100,'XX') from dual; 十六进制-->十进制select to_number('7D','XX') from dual;