关于字符串进行十六进制转换的集中方法

原创 2018年04月15日 14:27:33
package com.test;


import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Formatter;


import javax.net.ssl.SSLContext;


public class TestBoolean {


private static final char[] HEX_CHAR = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E',
'F' };


/**
* 位运算进行16进制转换

* @param tm
* @return
*/
public static String getStr1(String tm) {


String str = null;
try {
byte[] bt = tm.getBytes("utf-8");// 把字符串转换成字节数组
System.out.println("方法一:bt字节数为:" + Arrays.toString(bt));
int length = bt.length;
char[] cha = new char[length * 2];
int m = 0;
for (byte c : bt) {
cha[m++] = HEX_CHAR[c >>> 4 & 0xf];
cha[m++] = HEX_CHAR[c & 0xf];
}
str = new String(cha);
} catch (UnsupportedEncodingException e) {


e.printStackTrace();
}
System.out.println("strs是-----" + str);
return str;


}


/**
* 使用除与区域进行转换

* @param tm
* @return
*/
public static String getStr2(String tm) {


String str = null;
try {
byte[] bt = tm.getBytes("utf-8");// 把字符串转换成字节数组
System.out.println("方法二:bt字节数为:" + Arrays.toString(bt));
int length = bt.length;
char[] cha = new char[length * 2];
int m = 0;
int n = 0;
for (byte c : bt) {


if (c < 0) {
n = 256 + c;
} else {
n = c;
}
cha[m++] = HEX_CHAR[n / 16];
cha[m++] = HEX_CHAR[n % 16];


}
str = new String(cha);
} catch (UnsupportedEncodingException e) {


e.printStackTrace();
}
System.out.println("strs是-----" + str);
return str;


}


/**
* 格式化字符串位16进制

* @param tm
* @return
*/
public static String getStr3(String tm) {


StringBuilder s = new StringBuilder();
try {
byte[] bt = tm.getBytes("utf-8");// 把字符串转换成字节数组
System.out.println("方法三:bt字节数为:" + Arrays.toString(bt));


for (byte c : bt) {
Integer i = new Integer(c & 0xff);// 把字节类型的c转换成int类型,
int类型在计算机中占有4个字节32位而字节类型的c只占了1个字节8位,具有一定的随机性,所以要把高24位规避掉

Formatter formatter = new Formatter();
String str = formatter.format("%02x", i).toString();// 把i格式化城16进制的字符串
// ;%02X:以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0;

s.append(str.toUpperCase());
}


} catch (UnsupportedEncodingException e) {


e.printStackTrace();
}
System.out.println("strs是-----" + s.toString());
return s.toString();


}


/**
* 格式化字符串位16进制

* @param tm
* @return
*/
public static String getStr4(String tm) {


StringBuilder s = new StringBuilder();
try {
byte[] bt = tm.getBytes("utf-8");// 把字符串转换成字节数组
System.out.println("方法四:bt字节数为:" + Arrays.toString(bt));


for (byte c : bt) {


Formatter formatter = new Formatter();
String str = formatter.format("%02x", c).toString();// 把i格式化城16进制的字符串
// ;%02X:以十六进制输出,2为指定的输出字段的宽度.如果位数小于2,则左端补0;
s.append(str.toUpperCase());
}


} catch (UnsupportedEncodingException e) {


e.printStackTrace();
}
System.out.println("strs是-----" + s.toString());
return s.toString();


}


/**
* 将16进制字符串转换为byte[]

* @param str
* @return
*/
public static byte[] strToBytes(String str) {
if (str == null || str.trim().equals("")) {
return new byte[0];
}


byte[] bytes = new byte[str.length() / 2];
for (int i = 0; i < str.length() / 2; i++) {
String subStr = str.substring(i * 2, i * 2 + 2);
bytes[i] = (byte) Integer.parseInt(subStr, 16);
}


return bytes;
}


public static void main(String[] args) {
String tm = "中华人民共和国";
getStr1(tm);
getStr2(tm);
getStr3(tm);
getStr4(tm);
}


}

输出结果:





将字符串转化为十六进制

例如,“1A”=26,"02"=2,"1C"=28,
  • sanqima
  • sanqima
  • 2014年05月15日 09:45
  • 522

两字节16进制转十进制实例dlphi、c++

delphi ---------------------------------------- var   ii: SmallInt ; begin   ss[1] := Char($FF);...
  • franbo
  • franbo
  • 2013年12月27日 22:22
  • 368

如何在文件中将十六进制字符串转换为字符串

如何在文件中将十六进制字符串转换为字符串比如: 0x01000000 在二进制打开该文件后用十六进制输出为30 78 30 31 30 30 30 30 30 30 da因为编译器将每一个字符都以16...
  • summit921
  • summit921
  • 2006年07月27日 11:01
  • 508

高精度进制转换

高精度进制转换:
  • yanghuaqings
  • yanghuaqings
  • 2014年08月04日 17:18
  • 761

面试题-华为-进制转换-3

熬夜把第三个面试题做了,16进制转换乘10进制,依然是华为面试的题目,在此把自己做的一点成果分享给大家。该面试编程题来自于牛客网,本人分享在此仅供大家学习与交流用,不担负任何法律责任。博文版权归博主所...
  • Namer_Mega
  • Namer_Mega
  • 2017年02月07日 22:40
  • 477

MFC 十六进制字符串"0x*****”转为十进制数

在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如: char *ptr="0x11"; int n=0; //我们想让n等于0x11,即17 通常我们在C中,想将一个字符串转换...
  • jearmy
  • jearmy
  • 2014年11月12日 20:37
  • 2651

Java - 华为机试训练 - 进制转换

时间限制:1秒空间限制:32768K 本题知识点: 字符串  算法知识视频讲解 题目描述 写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输...
  • qq_34594236
  • qq_34594236
  • 2016年09月03日 21:53
  • 699

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

十进制与十六进制的转换 十进制-->十六进制  SQL> select to_char(100,'XX') from dual; TO_ ---  64 十六进制-->十进...
  • FIGHT_ANGEL
  • FIGHT_ANGEL
  • 2015年03月12日 10:34
  • 2267

JAVA实现二进制,十六进制输出

public class Main { /** * @param args */ public static void main(String[] args) { // ...
  • Crystal_oscillator
  • Crystal_oscillator
  • 2013年04月13日 11:03
  • 586

16进制转换为8进制

问题描述   给定n个十六进制正整数,输出它们对应的八进制数。 输入格式   输入的第一行为一个正整数n (1   接下来n行,每行一个由0~9、大写字母A~F组成的字符串,表示要转换的十六进...
  • a158337
  • a158337
  • 2014年11月29日 10:39
  • 489
收藏助手
不良信息举报
您举报文章:关于字符串进行十六进制转换的集中方法
举报原因:
原因补充:

(最多只允许输入30个字)