Android字符串和十六进制相互转化出现的中文乱码问题_Android

废话不读说了,直接给大家贴代码了,代码附有注释,可以说明一切,本文写的不好,还请见谅。

import java.io.ByteArrayOutputStream;
/**
* Created by Administrator on 2016/2/2.
* -----------16进制和字符串互转---------
* ------------解决中文乱码问题---------
*/
public class StringToSixthUtils {
private static String hexString = "0123456789abcdef";
/*
* 将字符串编码成16进制数字,适用于所有字符(包括中文)
*/
public static String encode(String str) {
//根据默认编码获取字节数组
byte[] bytes = str.getBytes();
StringBuilder sb = new StringBuilder(bytes.length * 2);
//将字节数组中每个字节拆解成2位16进制整数
for (int i = 0; i < bytes.length; i++) {
sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
sb.append(hexString.charAt((bytes[i] & 0x0f)));
}
return sb.toString();
}
/*
* 将16进制数字解码成字符串,适用于所有字符(包括中文)
*/
public static String decode(String bytes) {
ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
//将每2位16进制整数组装成一个字节
for (int i = 0; i < bytes.length(); i += 2)
baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString.indexOf(bytes.charAt(i + 1))));
return new String(baos.toByteArray());
}
}

下面给大家分享一段代码关于16进制字符串和字节数组互相转换

package com.wpn.net.util;
public class NumberChange {
/*
* 把16进制字符串转换成字节数组 @param hex @return
*/
public static byte[] hexStringToByte(String hex) {
int len = (hex.length() / 2);
byte[] result = new byte[len];
char[] achar = hex.toCharArray();
for (int i = 0; i < len; i++) {
int pos = i * 2;
result[i] = (byte) (toByte(achar[pos]) << 4 | toByte(achar[pos + 1]));
}
return result;
}
private static byte toByte(char c) {
byte b = (byte) "0123456789ABCDEF".indexOf(c);
return b;
}
/**
* 把字节数组转换成16进制字符串
*
* @param bArray
* @return
*/
public static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length);
String sTemp;
for (int i = 0; i < bArray.length; i++) {
sTemp = Integer.toHexString(0xFF & bArray[i]);
if (sTemp.length() < 2)
sb.append(0);
sb.append(sTemp.toUpperCase());
}
return sb.toString();
}
/**
* @函数功能: BCD码转为10进制串(阿拉伯数据)
* @输入参数: BCD码
* @输出结果: 10进制串
*/
public static String bcd2Str(byte[] bytes) {
StringBuffer temp = new StringBuffer(bytes.length * 2);
for (int i = 0; i < bytes.length; i++) {
temp.append((byte) ((bytes[i] & 0xf0) >>> 4));
temp.append((byte) (bytes[i] & 0x0f));
}
return temp.toString().substring(0, 1).equalsIgnoreCase("0") ? temp.toString().substring(1) : temp.toString();
}
/**
* @函数功能: 10进制串转为BCD码
* @输入参数: 10进制串
* @输出结果: BCD码
*/
public static byte[] str2Bcd(String asc) {
int len = asc.length();
int mod = len % 2;
if (mod != 0) {
asc = "0" + asc;
len = asc.length();
}
byte abt[] = new byte[len];
if (len >= 2) {
len = len / 2;
}
byte bbt[] = new byte[len];
abt = asc.getBytes();
int j, k;
for (int p = 0; p < asc.length() / 2; p++) {
if ((abt[2 * p] >= '0') && (abt[2 * p] <= '9')) {
j = abt[2 * p] - '0';
} else if ((abt[2 * p] >= 'a') && (abt[2 * p] <= 'z')) {
j = abt[2 * p] - 'a' + 0x0a;
} else {
j = abt[2 * p] - 'A' + 0x0a;
}
if ((abt[2 * p + 1] >= '0') && (abt[2 * p + 1] <= '9')) {
k = abt[2 * p + 1] - '0';
} else if ((abt[2 * p + 1] >= 'a') && (abt[2 * p + 1] <= 'z')) {
k = abt[2 * p + 1] - 'a' + 0x0a;
} else {
k = abt[2 * p + 1] - 'A' + 0x0a;
}
int a = (j << 4) + k;
byte b = (byte) a;
bbt[p] = b;
}
return bbt;
}
public static void main(String[] arg) {
/**
* 68 65 6C 6C 6 F 0A
* C4 E3 BA C3
*/
String[] str = {"C4", "E3", "BA", "C3"};
// String[] str = {"7E","02","04","00","07","10","00","00","00","00","13","08","4F","01","0B","0B","15","10","14","13","44","7E"};
byte[] b = new byte[str.length];
for(int i=0;i<str.length;i++){
b[i] = hexStringToByte(str[i])[0];
}
System.out.println(new String(b));
String strC ="你好";
String bth=bytesToHexString(strC.getBytes());
System.out.println(bth);
System.out.println(Short.MAX_VALUE);
System.out.println(Integer.toBinaryString(280));
}
}

以上所述是本文给大家分享的Android字符串和十六进制相互转化出现的中文乱码问题的相关内容,希望对大家有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索十六进制转化为十进制、十六进制转化为二进制、十进制转化成十六进制、汉字转化为十六进制、十进制转化十六进制,以便于您获取更多的相关知识。

时间: 2024-09-20 04:39:54

Android字符串和十六进制相互转化出现的中文乱码问题_Android的相关文章

Android字符串和十六进制相互转化出现的中文乱码问题

废话不读说了,直接给大家贴代码了,代码附有注释,可以说明一切,本文写的不好,还请见谅. import java.io.ByteArrayOutputStream; /** * Created by Administrator on 2016/2/2. * -----------16进制和字符串互转--------- * ------------解决中文乱码问题--------- */ public class StringToSixthUtils { private static String

android中Parcel中文乱码的解决:巧用十六进制

android中Parcel中文乱码的解决:巧用十六进制 把需要传递的中文转化成十六进制的字符串. str的格式: "48", "65", "6C", "6C", "6F", "CD", "FB", "BE", "A9", "D7", "E9" private String hex2Str

Android编程向服务器发送请求时出现中文乱码问题的解决方法_Android

本文实例讲述了Android编程向服务器发送请求时出现中文乱码问题的解决方法.分享给大家供大家参考,具体如下: 我们在andorid项目中通过get方式向服务器发送请求,其中url参数带有中文,将会产生乱码,乱码产生的原因有两种: 1. 在提交参数时,没有对中文参数进行URL编码 2. Tomcat服务器默认采用的是IOS8859-1编码(不支持中文)得到参数值 解决: 1. 进入android项目,在其中要提交参数的时候,对参数的值进行编码: 复制代码 代码如下: URLEncoder.enc

asp.net 10进制字符串转换为十六进制字符串

asp教程.net 10进制字符串转换为十六进制字符串 public string strtohex(string mstr) //返回处理后的十六进制字符串     {     return bitconverter.tostring(     asciiencoding.default.getbytes(mstr)).replace("-", " ");     } /* strtohex */    16进制字符串转换为10进制字符串  public stri

qt txt文件 中文 乱码-Qt5中用QTextStream向txt文件中写入中文字符串,打开文件时出现乱码

问题描述 Qt5中用QTextStream向txt文件中写入中文字符串,打开文件时出现乱码 在网上查了一些关于Qt中文乱码的问题,主要是因为机器的编码问题QTextCodec::setCodecForLocale(QTextCodec::codecForName(""GBK""));QTextCodec::setCodecForCStrings(QTextCodec::codecForName(""GBK"")); QText

arcgis-Arcgis For Android读取shpfile文件时,中文乱码问题

问题描述 Arcgis For Android读取shpfile文件时,中文乱码问题 加载shpfile文件,读取shpfile文件数据时,中文会出现乱码,如何解决? 解决方案 中文有一些问题的,不要用中文,用英文吧 解决方案二: 试试这个博客里讲的方法:http://blog.163.com/gis_wangwei/blog/static/2390410022015113134247554

CString字符串转换为十六进制字符串

最近在做项目时遇到这个问题,比如将汉字"冲"转换后为 "51B2",程序使用的是unicode字符集,下面是通过查资料后整理的解决方法: //--------------------------------------------------------------------- //函数:W2C //功能:将16位wchar_t转换为 8位char[2] //参数:w_cn为待转换的16位字符,c_cn[]为转换后的8位字符 //备注:wchar_t的高位字节应该

【Android】HTML编辑器打开中文乱码问题

问题描述 [Android]HTML编辑器打开中文乱码问题 我用Log在SD卡输出了一段日志,但是用HTMLViewer打开时,中文的部分变成了乱码 ?????? ?u153??u178?é"?è???? 请问应该如何解决?

编码-android studio 打开eclipse项目中文乱码(已经试过几种方法都不行)

问题描述 android studio 打开eclipse项目中文乱码(已经试过几种方法都不行) 项目是从师兄那里传下来的,当时是在eclipse下的项目,我用eclipse看了一下编码是GBK.目前在android studio 中中文注释和跑起来之后界面上的所有中文都是乱码. 目前试过的方法有: 在android studio 中调setting>appearance中的字体,没有用 setting>editor>file encoding,如图不管如何更改设置,apply按不动!直