Android與單片機通信常用數(shù)據(jù)轉(zhuǎn)換方法總結(jié)
Android與單片機通信常用數(shù)據(jù)轉(zhuǎn)換方法
1. 將GB2312轉(zhuǎn)化為中文,如BAFAC2DCB2B7→胡蘿卜,兩個字節(jié)合成一個文字
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.將中文轉(zhuǎn)化為GB2312,并且結(jié)果以byte[]形式返回,如胡蘿卜→new byte[]{BA FA C2 DC B2 B7},一個字被分為兩個字節(jié)
public static byte[] gbkToString(String str) throws Exception { return new String(str.getBytes("GBK"), "gb2312").getBytes("gb2312"); }
3.將十六進制的byte[]原封不動的轉(zhuǎn)化為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[]原封不動的轉(zhuǎn)化為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[]數(shù)組轉(zhuǎn)化為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代表正數(shù) }
6.將String的十六進制原封不動轉(zhuǎn)化為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; }
以上就是對Android 與單片機通信的資料整理,后續(xù)繼續(xù)補充相關(guān)資料謝謝大家對本站的支持!
相關(guān)文章
android實現(xiàn)程序自動升級到安裝示例分享(下載android程序安裝包)
這篇文章主要介紹了android實現(xiàn)下載android程序安裝包自動升級的示例,大家參考使用吧2014-01-01在Android中使用WebSocket實現(xiàn)消息通信的方法詳解
這篇文章主要介紹了在Android中使用WebSocket實現(xiàn)消息通信的方法詳解,消息推送功能可以說移動APP不可缺少的功能之一,使用WebSocket實現(xiàn)消息推送功能。感興趣的可以了解一下2020-07-07Android Activity Results API代替onActivityResul
說到onActivityResult,我們已經(jīng)非常熟悉來,通過在A activity啟動B activity并且傳入數(shù)據(jù)到B中,然后在A中通過onActivityResult來接收B中返回的數(shù)據(jù)。在最新的activity-ktx的beta版本中,谷歌已經(jīng)廢棄了onActivityResult2022-09-09Android ActionBarActivity設(shè)置全屏無標題實現(xiàn)方法總結(jié)
這篇文章主要介紹了Android ActionBarActivity設(shè)置全屏無標題實現(xiàn)方法總結(jié)的相關(guān)資料,需要的朋友可以參考下2017-04-04