青岛Android培训
达内青岛山东中心

15610069419

热门课程

android与单片机的通信原理

  • 时间:2016-08-25
  • 发布:青岛android培训
  • 来源:青岛android培训

下面直接贴代码

1. 将GB2312转化为中文,如BAFAC2DCB2B7→胡萝卜,两个字节合成一个文字

public static String stringToGbk(String string) throws Exception {

byte[] bytes = new byte[string.length() / 2];

for (int j = 0; j < bytes.length; j++) {

byte high = Byte.parseByte(string.substring(j * 2, j * 2 + 1), 16);

byte low = Byte.parseByte(string.substring(j * 2 + 1, j * 2 + 2),

16);

bytes[j] = (byte) (high << 4 | low);

}

String result = new String(bytes, "GBK");

return result;

}

2.将中文转化为GB2312,并且结果以byte[]形式返回,如胡萝卜→new byte[]{BA FA C2 DC B2 B7},一个字被分为两个字节

public static byte[] gbkToString(String str) throws Exception {

return new String(str.getBytes("GBK"), "gb2312").getBytes("gb2312");

}

3.将十六进制的byte[]原封不动的转化为string,如byte[]{0x7e,0x80,0x11,0x20}→7e801120,可用于log打印

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();

}

4.将十六进制的byte[]原封不动的转化为string,并且每个byte之间用空格分开,如byte[]{0x7e,0x80,0x11,0x20}→7e 80 11 20,,可用于log打印

public static StringBuilder byte2HexStr(byte[] data) {

if (data != null && data.length > 0) {

StringBuilder stringBuilder = new StringBuilder(data.length);

for (byte byteChar : data) {

stringBuilder.append(String.format("%02X ", byteChar));

}

return stringBuilder;

}

return null;

}

5.将byte[]数组转化为8、10、16等各种进制,例如byte[0x11,0x20]→4384,约等于1120(16进制)→4384,radix代表进制

public static String bytesToAllHex(byte[] bytes, int radix) {

return new BigInteger(1, bytes).toString(radix);// 这里的1代表正数

}

6.将String的十六进制原封不动转化为byte的十六进制,例如7e20→new byte[]{0x7e,x20}

public static byte[] HexString2Bytes(String src) {

byte[] ret = new byte[src.length() / 2];

byte[] tmp = src.getBytes();

for (int i = 0; i < tmp.length / 2; i++) {

ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);

}

return ret;

}

public static byte uniteBytes(byte src0, byte src1) {

byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 }))

.byteValue();

_b0 = (byte) (_b0 << 4);

byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 }))

.byteValue();

byte ret = (byte) (_b0 ^ _b1);

return ret;

}

上一篇:Handler机制(三)----Looper源码解析
下一篇:Xamarin提示Build-tools版本过老

从程序员之死看情商和智商的关系

安卓开发中要注意的十个要点

移动互联网时代,人人都可以安卓编程

Android 工程师还有没有出路?

选择城市和中心
贵州省

广西省

海南省