2进制转中文互转
package com.kingstar.mnReport.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @ClassName AsciiConvertUtil
* @Description
* @Author xinsen.liao
* @Date 2020/6/10 16:13
*/
public class AsciiConvertUtil {
public static char ascii2Char(int ASCII) {
return (char) ASCII;
}
public static int char2ASCII(char c) {
return (int) c;
}
public static String ascii2String(int[] ASCIIs) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ASCIIs.length; i++) {
sb.append((char) ascii2Char(ASCIIs[i]));
}
return sb.toString();
}
public static String ascii2String(String ASCIIs) {
String[] ASCIIss = ASCIIs.split(",");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ASCIIss.length; i++) {
sb.append((char) ascii2Char(Integer.parseInt(ASCIIss[i])));
}
return sb.toString();
}
public static int[] string2ASCII(String s) {// 字符串转换为ASCII码
if (s == null || "".equals(s)) {
return null;
}
char[] chars = s.toCharArray();
int[] asciiArray = new int[chars.length];
for (int i = 0; i < chars.length; i++) {
asciiArray[i] = char2ASCII(chars[i]);
}
return asciiArray;
}
public static String getIntArrayString(int[] intArray) {
return getIntArrayString(intArray, ",");
}
public static String getIntArrayString(int[] intArray, String delimiter) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < intArray.length; i++) {
sb.append(intArray[i]).append(delimiter);
}
return sb.toString();
}
public static String getASCII(int begin, int end) {
StringBuffer sb = new StringBuffer();
for (int i = begin; i < end; i++) {
sb.append(i).append(":").append((char) i).append("/t");
// sb.append((char) i).append("/t");
if (i % 10 == 0) {
sb.append("/n");
}
}
return sb.toString();
}
public static String getCHASCII(int begin, int end) {
return getASCII(19968, 40869);
}
public static void showASCII(int begin, int end) {
for (int i = begin; i < end; i++) {
// System.out.print(i + ":" + (char) i + "/t");
System.out.print((char) i + "/t");
if (i % 10 == 0) {
System.out.println();
}
}
}
public static void showCHASCII() {
showASCII(19968, 40869);
}
public static void showIntArray(int[] intArray) {
showIntArray(intArray, ",");
}
public static void showIntArray(int[] intArray, String delimiter) {
for (int i = 0; i < intArray.length; i++) {
System.out.print(intArray[i] + delimiter);
}
}
/* public static void createFile(String filePathAndName, String fileContent)
throws IOException {
String filePath = filePathAndName;
filePath = filePath.toString();
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.createNewFile();
}
FileWriter resultFile = new FileWriter(myFilePath);
PrintWriter myFile = new PrintWriter(resultFile);
String strContent = fileContent;
myFile.println(strContent);
myFile.close();
resultFile.close();
}*/
public static String convertStringToHex(String str){
char[] chars = str.toCharArray();
StringBuffer hex = new StringBuffer();
for(int i = 0; i < chars.length; i++){
hex.append(Integer.toHexString((int)chars[i]));
}
return hex.toString();
}
public static String convertHexToString(String hex){
StringBuilder sb = new StringBuilder();
StringBuilder temp = new StringBuilder();
//49204c6f7665204a617661 split into two characters 49, 20, 4c...
for( int i=0; i<hex.length()-1; i+=2 ){
//grab the hex in pairs
String output = hex.substring(i, (i + 2));
//convert hex to decimal
int decimal = Integer.parseInt(output, 16);
//convert the decimal to character
sb.append((char)decimal);
temp.append(decimal);
}
return sb.toString();
}
public static boolean containsNumOrLetter(String str) {
String patt="[0-9|a-z|A-Z]";
Pattern r = Pattern.compile(patt);
Matcher matcher = r.matcher(str);
return matcher.find();
}
public static void main(String[] args) {
AsciiConvertUtil strToHex = new AsciiConvertUtil();
System.out.println("\n-----ASCII码转换为16进制 -----");
String str = ":";
System.out.println("字符串: " + str);
String hex = strToHex.convertStringToHex(str);
System.out.println("转换为16进制 : " + hex);
System.out.println("\n***** 16进制转换为ASCII *****");
System.out.println("Hex : " + hex);
System.out.println("ASCII : " + strToHex.convertHexToString("3A"));
String s = "好好学习!天天向上!————笑的自然 2009年3月11日";
System.out.println("\n***** *****");
showIntArray(string2ASCII(s), " ");
System.out.println();
System.out.println(ascii2String(string2ASCII(s)));
}
}