androidbyte数组使用_android byte的用法
byte 为有符号数据,引用文章
android byte的使用
暴走邻家 2018-01-24 08:55:07
10333
收藏 4
分类专栏: android Android基础 文章标签: android app java 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 eguid
- eguid的官网:http://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的使用_谢岩的博客-CSDN博客blog.csdn.net
androidbyte数组使用_android byte的用法相关推荐
- php 数组重新打乱_PHP 将数组打乱 shuffle函数的用法及简单实例
shuffle() PHP shuffle() 函数随机排列数组单元的顺序(将数组打乱).本函数为数组中的单元赋予新的键名,这将删除原有的键名而不仅是重新排序. 语法: bool shuffle ( ...
- php arrayaccess 二维,PHP数组式访问接口ArrayAccess用法分析
本文实例讲述了PHP数组式访问接口ArrayAccess用法.分享给大家供大家参考,具体如下: PHP ArrayAccess接口又叫数组式访问接口,该接口的作用是提供像访问数组一样访问对象的能力. ...
- java int转byte数组_javaint转byte数组
JAVA中怎么将int数据转换为byte数据? 例如将int b=325转换为 byte a,结果为多少啊? JAVA中根据以下代码将int数据转换为byte数据: public static byt ...
- bytearray java_详解Java中ByteArray字节数组的输入输出流的用法
ByteArrayInputStream 介绍ByteArrayInputStream 是字节数组输入流.它继承于InputStream. 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节:通俗点说 ...
- java编程int和byte的用法_Java中的Byte Array和Int转换
Java中的Byte Array和Int转换 我有这两个函数有一些困难: byteArrayToInt和intToByteArray . 问题是,如果我使用另一个来得到另一个结果,结果是不同的,你可以 ...
- C++对象数组与对象指针的用法【C++初学面向对象编程】
文章目录 一.对象数组 二.对象指针 一.对象数组 1.概念 对象数组本质上就是:数组中每一个元素都是同一个类的对象. //定义对象数组(装有3个对象的数组) Box aa[3]={Box(1, 1, ...
- jq添加数组_jquery中push()的用法(数组添加元素)
push定义和用法 push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. 语法 arrayObject.push(newelement1,newelement2,....,newele ...
- numpy数组扩展函数repeat和tile用法
numpy数组扩展函数有repeat和tile,由于数组不能进行动态扩展,故函数调用之后都重新分配新的空间来存储扩展后的数据. repeat函数功能:对数组中的元素进行连续重复复制 用法有两种: 1) ...
- java byte数组操作_Java byte数组操纵方式代码实例解析
字节数组的关键在于它为存储在该部分内存中的每个8位值提供索引(快速),精确的原始访问,并且您可以对这些字节进行操作以控制每个位. 坏处是计算机只将每个条目视为一个独立的8位数 - 这可能是你的程序正在 ...
最新文章
- 1925亿美元,中国仍是世界最大芯片市场!2022全球半导体行业报告出炉
- SQL Server:定时作业的设置方法
- HDU 1181 变形课(dfs)
- [luogu P4198] 楼房重建(线段树 + 思维)
- Hadoop生态hive(一)介绍
- 【转】Microsoft Graph Web应用程序极致开发体验
- 骑车与走路(信息学奥赛一本通-T1050)
- MUI框架 按钮点击响应不好的问题解决办法
- PHP图片验证码制作(上)
- 2017-2018-1 20155202 《信息安全系统设计基础》第4周学习总结
- C++11 列表初始化
- 一键破解宝塔面板的专业版本权限
- 20P44 Premiere预设600个摄像机动画信号干扰调色视觉特效pr模板
- MySQL——基础知识
- 中国浙江省动漫产业发展方向探析及投资决策建议报告2021-2027年
- 【交换机】交换机简介
- 【AirSim】Windows下搭建AirSim
- Latex角度输入(°)
- PhotonServer中日志的配置
- 论文学习:基于集成YOLO算法的蝴蝶检测与分类