android byte的使用
今天,简单讲讲android里byte的使用。
这个其实很简单,但是自己觉得一直没有完全弄明白,所以记录一下。
byte即字节的意思,是java中的基本类型,用心申明字节型的变量。
通常在读取非文本文件时(如图片,声音,可执行文件)需要用字节数组来保存文件的内容,在下载文件时,也是用byte数组作临时的缓冲器接收文件内容。所以说byte在文件操作时是必不可少的。不管是对文件写入还是读取都要用到。
byte在java中是一种是数据类型,代表一个字节,一个字节包含8个位,所以,byte类型的取值范围为-128到127。
在某些程序中(尤其是和硬件有关的程序)会将某些数据存储到字节类型的变量中,比如00110010,其中每个位都代表一个参数,然后以位运算的方式对参数进行取值和赋值操作。
下面介绍一些byte的相关函数:
一、实现功能
1、int与byte互转
2、int与byte[]互转
3、short与byte互转
4、short与byte[]互转
5、16位short与byte[]互转
6、long与byte[]互转
7、byte[]与inputstream互转
8、byte与String互转
9、16进制字符转int
10、十进制转2进制
11、byte[]转16进制字符
12、byte[]数组指定位置抽取byte[]
二、代码实现
package cc.eguid.util;import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
/*** 基本数据互转工具* @author eguideguid的官网:www.eguid.cc*eguid的csdn博客:http://blog.csdn.net/eguid_1,博客园:http://www.cnblogs.com/eguid */
public class ByteUtil {private static ByteBuffer buffer = ByteBuffer.allocate(8);/*** int转byte* @param x* @return*/public static byte intToByte(int x) { return (byte) x; } /*** byte转int* @param b* @return*/public static int byteToInt(byte b) { //Java的byte是有符号,通过 &0xFF转为无符号return b & 0xFF; } /*** byte[]转int* @param b* @return*/public static int byteArrayToInt(byte[] b) { return b[3] & 0xFF | (b[2] & 0xFF) << 8 | (b[1] & 0xFF) << 16 | (b[0] & 0xFF) << 24; }public static int byteArrayToInt(byte[] b, int index){return b[index+3] & 0xFF | (b[index+2] & 0xFF) << 8 | (b[index+1] & 0xFF) << 16 | (b[index+0] & 0xFF) << 24; }/*** int转byte[]* @param a* @return*/public static byte[] intToByteArray(int a) { return new byte[] { (byte) ((a >> 24) & 0xFF), (byte) ((a >> 16) & 0xFF), (byte) ((a >> 8) & 0xFF), (byte) (a & 0xFF) }; } /** * short转byte[]* * @param b * @param s * @param index */ public static void byteArrToShort(byte b[], short s, int index) { b[index + 1] = (byte) (s >> 8); b[index + 0] = (byte) (s >> 0); }/** * byte[]转short * * @param b * @param index * @return */ public static short byteArrToShort(byte[] b, int index) { return (short) (((b[index + 0] << 8) | b[index + 1] & 0xff)); }/** * 16位short转byte[] * * @param s * short * @return byte[]* */ public static byte[] shortToByteArr(short s) { byte[] targets = new byte[2]; for (int i = 0; i < 2; i++) { int offset = (targets.length - 1 - i) * 8; targets[i] = (byte) ((s >>> offset) & 0xff); } return targets; }/*** byte[]转16位short* @param b* @return*/public static short byteArrToShort(byte[] b){return byteArrToShort(b,0);}/*** long转byte[]* @param x* @return*/public static byte[] longToBytes(long x) { buffer.putLong(0, x); return buffer.array(); } /*** byte[]转Long* @param bytes* @return*/public static long bytesToLong(byte[] bytes) { buffer.put(bytes, 0, bytes.length); buffer.flip();//need flip return buffer.getLong(); }/*** 从byte[]中抽取新的byte[]* @param data - 元数据* @param start - 开始位置* @param end - 结束位置* @return 新byte[]*/public static byte[] getByteArr(byte[]data,int start ,int end){byte[] ret=new byte[end-start];for(int i=0;(start+i)<end;i++){ret[i]=data[start+i];}return ret;}/*** 流转换为byte[]* @param inStream* @return*/public static byte[] readInputStream(InputStream inStream) {ByteArrayOutputStream outStream = null;try {outStream = new ByteArrayOutputStream();byte[] buffer = new byte[1024];byte[] data = null;int len = 0;while ((len = inStream.read(buffer)) != -1) {outStream.write(buffer, 0, len);}data = outStream.toByteArray();return data;}catch (IOException e) {return null;} finally {try {if (outStream != null) {outStream.close();}if (inStream != null) {inStream.close();}} catch (IOException e) {return null;}}}/*** byte[]转inputstream* @param b* @return*/public static InputStream readByteArr(byte[] b){return new ByteArrayInputStream(b);}/*** byte数组内数字是否相同* @param s1* @param s2* @return*/public static boolean isEq(byte[] s1,byte[] s2){int slen=s1.length;if(slen==s2.length){for(int index=0;index<slen;index++){if(s1[index]!=s2[index]){return false;}}return true;}return false;}/*** byte数组转换为Stirng* @param s1 -数组* @param encode -字符集* @param err -转换错误时返回该文字* @return*/public static String getString(byte[] s1,String encode,String err){try {return new String(s1,encode);} catch (UnsupportedEncodingException e) {return err==null?null:err;}}/*** byte数组转换为Stirng* @param s1-数组* @param encode-字符集* @return*/public static String getString(byte[] s1,String encode){return getString(s1,encode,null);}//测试public static void main(String []args){System.err.println(isEq(new byte[]{1,2},new byte[]{1,2}));}/*** 字节数组转16进制字符串* @param b* @return*/public static String byteArrToHexString(byte[] b){String result="";for (int i=0; i < b.length; i++) {result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring(1);}return result;}/*** 16进制字符创转int* @param hexString* @return*/public static int hexStringToInt(String hexString){return Integer.parseInt(hexString,16);}/*** 十进制转二进制* @param i* @return*/public static String intToBinary(int i){return Integer.toBinaryString(i);}
}
android byte的使用就讲完了
就这么简单。
android byte的使用相关推荐
- android byte[]与图片的转换
今天,简单讲讲android如何将byte数组的数据转换成图片显示. 之前,在做一个功能时,从服务器获得了图片的byte数组的数据,需要将数据转成图片显示在手机上,或者保存在文件里.当时居然不知道怎么 ...
- android byte[] 清空,android byte的使用
释放双眼,带上耳机,听听看~! 今天,简单讲讲android里byte的使用. 这个其实很简单,但是自己觉得一直没有完全弄明白,所以记录一下. byte即字节的意思,是java中的基本类型,用心申明字 ...
- android byte[] 转string 好多问号_#WIPI# Android使用HID设备
哈罗大家好.生活总是这样计划赶不上变化,今天为大家分享一下新加的小功能--使用Android设备连接HID设备. 安卓内部已经内置了丰富的驱动,所以一般的设备我们只需要简单是设置就可灵活使用. 首先对 ...
- android byte[] 转string 好多问号_Android 仿抖音实现动态壁纸
code小生,一个专注 Android 领域的技术平台 公众号回复 Android 加入我的安卓技术群 作者:7_px 链接:https://www.jianshu.com/p/fc5cf284abb ...
- android byte转string_唠点儿你不一定知道的Android小知识
本文作者 作者:郑卫超 链接: https://vchao.blog.csdn.net/article/details/104349868 本文由作者授权发布. 1. YYYY 和 yyyy 不一样 ...
- android byte转string_高性能AES256对称加解密,兼容Java、IOS、Android
最近在设计一个给IOS和Android提供接口的项目框架,在接口安全上准备使用常规的加密技术,确保在非法访问接口的情况下拿到的数据一时半会也没用. 查了相关的资料,用的最多的几种加密算法,DES.AE ...
- android byte转字符串,Andriod | Byte和String的相互转换
核心: String和Byte间的相互转换 1.png 几行代码,教你最简单的转换, 然鹅,在实际应用过程中,数据的复杂性不只是我们简单的两句话就可以转换了的.那么就来看一下我昨天遇到的问题 需求: ...
- android byte[] 转string 好多问号_java程序员面试遇到string题如何不凉?
原标题:java程序员面试遇到string题如何不凉? 最近看到好多同学都在储备面试知识,以备来年轻松应对面试官,拿到心仪offer,之前好多同学反映遇到string,都只能送给自己一首凉凉.别凉,今 ...
- android byte转16进制字符串,如何将字节数组转换为十六进制字符串,反之亦然?...
我通过一些粗略的Stopwatch性能测试运行了各种转换方法,一个带有随机句子的运行(n = 61,1000次迭代)和一个带有Project Gutenburg文本的运行(n = 1,238,957, ...
最新文章
- leetcode 235. 二叉搜索树的最近公共祖先(Java版,树形dp套路)
- python中pickle模块的用法_Python中json模块和pickle模块的简单介绍(附示例)
- 懒人修仙传ce修改方法_专访|《凡人修仙传》原著作者忘语:“韩老魔”原型是我...
- 学会 配置文件+反射,走遍全球都不怕.
- python字符串与数字转换,python 字符串和整数的转换方法
- 技巧 | Markdown 语法中首行缩进的方法
- 2022.03.15 Arcmap栅格数据无法按照拟定范围进行重分类的解决方案
- IsPostBack是什么意思,如何运用?
- c#程序设计实训报告心得体会_C程序设计实训个人总结(推荐五篇)
- php ajax 域名查询,PHP+AJAX 实现域名查询系统
- matlab 中peaks函,peaks_matlab中PEAKS
- Ubuntu下安装Maskrcnn_benchmark(pytorch)踩坑分享
- pytorch指定版本更新
- 8086的两种工作模式_8086系统中最小模式与最大模式两种工作方式的主要区别是什么?...
- Qt下使用vs编译的库文件
- 智力题——1红蓝墨水
- js 中 中文、空格、数字、字符串混合排序
- 分支与循环结构测试题(有答案版)
- 一键U盘装系统 电脑为什么突然打不开
- gpgpu_GPGPU Java编程