1、写转换函数是必须的,目前Jdk中无现有类。
怀安ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
2、在不同的字符编码当中,汉字的对应的数值或者说编码值不一样,像GBK、Unicode肯定是不一样的。以Java默认的Unicode为例说明问题。
3、 一,得到字符串,
二,遍历每个字符,用char来接收,实为int值,或直接用int也可以。
三,Integer.toHexString(每个字符对应的int值);
四,前缀加个“0x”就可以了。
4、如果是其它类型的话,找到对应的字符和数值对应表就可以了。
不知可否解决问题了。
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;ibytes.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;
}
}
}
}
方法如下:
/* *
* 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进制字符串,
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
public class HelloWorld
{
public static void main(String []args)
{
int number=123456;
System.out.println(Integer.toHexString(number)); // 小写的
System.out.println(Integer.toHexString(number).toUpperCase()); // 大写的
System.out.println("0x"+Integer.toHexString(number)); // 加上0x前缀的
}
}
运行结果:
//当然可以:我分两步讲解,两种方法,一个比较简单,利用系统API,一个讲原理稍微复杂一点!
import java.util.Scanner;
public class Tohex
{
//录入数字用!
private static Scanner sc=new Scanner(System.in);
//容器,存放转好的数字,也可以不用,也可以用数组!
private static StringBuffer sb;
public static void main(String[] args)
{
/*
Integer,这个类功能很强大,是Java提供的,想用可以查询一下;
特点就是简单拿来就用,新手不建议使用,搞懂进制转换原理以后在去使用API事半功倍!
*/
System.out.println("\n\t\t==========装16进制!==========\n\n系统API(Integer)演示:\n");
init();
}
//方法1,用系统API
private static void init()
{
//十进制!
int a=125454;
//转换过程16进制!
String hex=Integer.toHexString(a);
System.out.println(a+" 十六进制= "+hex+"\n------------------------------------\n\t\t自定义测试:\n");
input();
}
//方法2:自己动手转换,了解转换原理!
private static void input()
{
while(true)
{
System.out.println("输入被转数字:\n");
int a=sc.nextInt();
System.out.println("输入想转的进制:暂时支持2,8,16进制");
int b=sc.nextInt();
ToHex(a,b);
}
}
//转换过程!
private static void ToHex(int x,int y)//a是要转数字,b是进制!
{
sb=new StringBuffer();
int a=x,b=0,c=0;
switch(y)
{
case 2:b=1;c=1;
break;
case 8:b=7;c=3;
break;
case 16:b=15;c=4;
break;
default :break;
}
while(a0)
{
int tem=ab;
String s= tem9?((char)(tem-10+'A'))+"":tem+"";
sb.append(s);
a=ac;
}
print(sb);//传递打印!
}
//打印!
private static void print(StringBuffer sb)
{
System.out.println("\n结果演示:"+sb.reverse()+"\n请继续输入测试---\n");
sb=null;
}
}
算法比较复杂,建议直接使用系统内置的方法
int num = 1000;
String hexStr = Integer.toHexString(num);
直接看源码,可能你需要的只是简单的,需要的话我可以给你写个简单的算法,只支持正数,应该还不能太大的
public static void main(String[] args) {
int num = 5000;
String hexStr = Integer.toHexString(num);
System.out.println(hexStr);
StringBuilder builder = new StringBuilder();
int2Hex(num, builder);
System.out.println(builder.reverse());
}
static char[] hexChar = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
public static void int2Hex(int num, StringBuilder builder) {
if (num 0) {
return;
}
if (num 16) {
builder.append(hexChar[num]);
return;
}
int temp = num % 16;
int index = num / 16;
builder.append(hexChar[temp]);
int2Hex(index, builder);
}