Android 处理蓝牙(例如字节数组)数据的方法,例如十六进制转字节数组

/**

 * 十六进制转字节数组
 * @param hexString
 * @return
 */
public static byte[] hexStringToBytes(String hexString) {
    if (hexString == null || hexString.equals("")) {
        return null;
    }
    hexString = hexString.toUpperCase();
    int length = hexString.length() / 2;
    char[] hexChars = hexString.toCharArray();
    byte[] d = new byte[length];
    for (int i = 0; i < length; i++) {
        int pos = i * 2;
        d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
    }
    return d;
}

/**
 * 字节数组转16进制
 * @param bytes 需要转换的byte数组
 * @return  转换后的Hex字符串
 */
public static String bytesToHex(byte[] bytes) {
    StringBuffer sb = new StringBuffer();
    for(int i = 0; i < bytes.length; i++) {
        String hex = Integer.toHexString(bytes[i] & 0xFF);
        if(hex.length() < 2){
            sb.append(0);
        }
        sb.append(hex);
    }
    return sb.toString();
}

/**
 * byte转int类型
 * 如果byte是负数,则转出的int型是正数
 * @param b
 * @return
 */
public static int byteToInt(byte b){
   System.out.println("byte 是:"+b);
   int x = b & 0xff;
   System.out.println("int 是:"+x);
   return x;
}

/**
 * 字节转十六进制
 * @param b 需要进行转换的byte字节
 * @return  转换后的Hex字符串
 */
public static String byteToHex(byte b){
    String hex = Integer.toHexString(b & 0xFF);
    if(hex.length() < 2){
        hex = "0" + hex;
    }
    return hex;
}

/**
 * 合并多个byte[]为一个byte数组
 * @param values
 * @return
 */
public static byte[] byteMergerAll(byte[]... values) {
    int length_byte = 0;
    for (int i = 0; i < values.length; i++) {
        length_byte += values[i].length;
    }
    byte[] all_byte = new byte[length_byte];
    int countLength = 0;
    for (int i = 0; i < values.length; i++) {
        byte[] b = values[i];
        System.arraycopy(b, 0, all_byte, countLength, b.length);
        countLength += b.length;
    }
    return all_byte;
}

原文地址:https://www.cnblogs.com/dmrbell/p/12564304.html

时间: 2024-11-09 00:33:00

Android 处理蓝牙(例如字节数组)数据的方法,例如十六进制转字节数组的相关文章

Android 开发中使用Intent传递数据的方法

Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short[].int.int[].long.long[].float.float[].double.double[].String.String[],还有采用实现Serializable.Parcelable接口的类对象传递数据的两种方法:一种是Bundle.putSerializable(Key,Obje

android基础(六)网络数据解析方法

在网络上传输数据时最常用的方法有两种:XML和JSON,下面就对这两种类型的数据解析进行讲解. 一.XML数据解析 在Android中,常见的XML解析器分别为SAX解析器.DOM解析器和PULL解析器. (1)SAX解析 SAX(Simple API for XML)解析器是一种基于事件的解析器,它的核心是事件处理模式,主要是围绕着事件源以及事件处理器来工作的.当事件源产生事件后,调用事件处理器相应的处理方法,一个事件就可以得到处理.在事件源调用事件处理器中特定方法的时候,还要传递给事件处理器

Android——通过Intent传递一些二进制数据的方法有哪些

1.方法 (1)使用Serializable接口实现序列化.利用Bundle.putSerializable(Key, Object);这里objec对象需要实现serializable接口. (2)实现Parcelable接口串行化.利用Bundle.putParcelable(Key, Object);这里Object对象需要实现Parcelable接口. 2.两者区别: (1)在使用内存的时候,Parcelable类比Serializable性能高,所以推荐使用Parcelable类. (

ecshop在dwt模板中和lbi中输入数组详情的方法 ecshop模板中输出数组的方法

ecshop系统的模板是基于smarty开发的,所以语法有很多smarty的特性,但是又不尽相同. 在ecshop的模板文件中(包含.dwt和.lbi的文件),想要用print_r打印一个数组(smarty的语法是{$array|print_r})却发现不行,在模板中始终只是出现一个array,无法打印出数组中的内容.随着ecshop的发展,现在市面上ecshop的商业模板越来越多,免费模板也是来越多,这时候买别人的模板,放在商城中就很担心被加入后门了,所以ecshop就在模板类中屏蔽了所有的函

将一个4X4的数组进行逆时针旋转90度后输出,要求原数组数据随机输入

//将一个4X4的数组进行逆时针旋转90度后输出,要求原数组数据随机输入 #include<stdio.h> int main() { int a[4][4],b[4][4],i,j;//a存放原是数组数据,b存放旋转后的数组数据 printf("please input 16 number:"); for(i=0;i<4;i++) for(j=0;j<4;j++) { scanf("%d",&a[i][j]); b[3-j][i]=

8086定义数据的方法

13 8086中定义数据的方法 <1>db 一个字节 <2>dw 一个字表示两个字节 <3>dd 两个字,表示4个字节 <4>dup 表示数据重复的指令 db N dup(xx) ;//dup表示定义的数据,N表示重复的个数 dw N dup(xx) ;// dup表示定义的数据,N表示重复的个数 dd N dup(xx) ;// dup表示定义的数据,N表示重复的个数 data segment db 1 dw 1 dd 1 data ends 上面这段程序

数组的剩余方法

㈠concat( )方法 ⑴可以连接两个或多个数组,并将新的数组返回 ⑵该方法不会对原数组产生影响   ⑶示例如下:   ㈡join()方法 ⑴该方法可以将数组转换为一个字符串 ⑵该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回 ⑶在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的连接符 ⑷如果不指定连接符,则默认使用“,”作为连接符   ⑸示例1:不会对原数组产生影响   ⑹示例2:将数组转换为字符串   ⑺示例3:指定一个字符串作为参数   ㈢revers

JavaScript数组常用API方法汇总

1.push() 方法将一个或多个元素添加到数组的末尾,并返回该数组的新长度. const animals = ['pigs', 'goats', 'sheep']; const count = animals.push('cows'); console.log(count); // expected output: 4 console.log(animals); // expected output: Array ["pigs", "goats", "s

【android】存储数组数据到SharedPreferences

如果要数组数据(如boolean[] .int[]等)到SharedPreferences时,我们可以先将数组数据组织成json数据存储到SharedPreferences,读取时则对json数据进行解析就ok了. 例如,我要保存boolean[] 数组数据: public static void saveApkEnalbleArray(Context context,boolean[] booleanArray) { SharedPreferences prefs = context.getS