androidbyte数组使用_android byte的用法

byte 为有符号数据,引用文章

android byte的使用

1438f89d2def846a51cdbfa621a5949e.png

暴走邻家 2018-01-24 08:55:07

a0d3c365dfd04ce7fa5b1eab5e0d2a21.png

10333

5873c2ad887af66ec550a8ce8d6d6359.png

收藏 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[]
二、代码实现


  1. package cc.eguid.util;

  2. import java.io.ByteArrayInputStream;

  3. import java.io.ByteArrayOutputStream;

  4. import java.io.IOException;

  5. import java.io.InputStream;

  6. import java.io.UnsupportedEncodingException;

  7. import java.nio.ByteBuffer;

  8. /**

  9. * 基本数据互转工具

  10. * @author eguid

  11. eguid的官网:http://www.eguid.cc

  12. *eguid的csdn博客:http://blog.csdn.net/eguid_1,博客园:http://www.cnblogs.com/eguid

  13. */

  14. public class ByteUtil {

  15. private static ByteBuffer buffer = ByteBuffer.allocate(8);

  16. /**

  17. * int转byte

  18. * @param x

  19. * @return

  20. */

  21. public static byte intToByte(int x) {

  22. return (byte) x;

  23. }

  24. /**

  25. * byte转int

  26. * @param b

  27. * @return

  28. */

  29. public static int byteToInt(byte b) {

  30. //Java的byte是有符号,通过 &0xFF转为无符号

  31. return b & 0xFF;

  32. }

  33. /**

  34. * byte[]转int

  35. * @param b

  36. * @return

  37. */

  38. public static int byteArrayToInt(byte[] b) {

  39. return b[3] & 0xFF |

  40. (b[2] & 0xFF) << 8 |

  41. (b[1] & 0xFF) << 16 |

  42. (b[0] & 0xFF) << 24;

  43. }

  44. public static int byteArrayToInt(byte[] b, int index){

  45. return b[index+3] & 0xFF |

  46. (b[index+2] & 0xFF) << 8 |

  47. (b[index+1] & 0xFF) << 16 |

  48. (b[index+0] & 0xFF) << 24;

  49. }

  50. /**

  51. * int转byte[]

  52. * @param a

  53. * @return

  54. */

  55. public static byte[] intToByteArray(int a) {

  56. return new byte[] {

  57. (byte) ((a >> 24) & 0xFF),

  58. (byte) ((a >> 16) & 0xFF),

  59. (byte) ((a >> 8) & 0xFF),

  60. (byte) (a & 0xFF)

  61. };

  62. }

  63. /**

  64. * short转byte[]

  65. *

  66. * @param b

  67. * @param s

  68. * @param index

  69. */

  70. public static void byteArrToShort(byte b[], short s, int index) {

  71. b[index + 1] = (byte) (s >> 8);

  72. b[index + 0] = (byte) (s >> 0);

  73. }

  74. /**

  75. * byte[]转short

  76. *

  77. * @param b

  78. * @param index

  79. * @return

  80. */

  81. public static short byteArrToShort(byte[] b, int index) {

  82. return (short) (((b[index + 0] << 8) | b[index + 1] & 0xff));

  83. }

  84. /**

  85. * 16位short转byte[]

  86. *

  87. * @param s

  88. * short

  89. * @return byte[]

  90. * */

  91. public static byte[] shortToByteArr(short s) {

  92. byte[] targets = new byte[2];

  93. for (int i = 0; i < 2; i++) {

  94. int offset = (targets.length - 1 - i) * 8;

  95. targets[i] = (byte) ((s >>> offset) & 0xff);

  96. }

  97. return targets;

  98. }

  99. /**

  100. * byte[]转16位short

  101. * @param b

  102. * @return

  103. */

  104. public static short byteArrToShort(byte[] b){

  105. return byteArrToShort(b,0);

  106. }

  107. /**

  108. * long转byte[]

  109. * @param x

  110. * @return

  111. */

  112. public static byte[] longToBytes(long x) {

  113. buffer.putLong(0, x);

  114. return buffer.array();

  115. }

  116. /**

  117. * byte[]转Long

  118. * @param bytes

  119. * @return

  120. */

  121. public static long bytesToLong(byte[] bytes) {

  122. buffer.put(bytes, 0, bytes.length);

  123. buffer.flip();//need flip

  124. return buffer.getLong();

  125. }

  126. /**

  127. * 从byte[]中抽取新的byte[]

  128. * @param data - 元数据

  129. * @param start - 开始位置

  130. * @param end - 结束位置

  131. * @return 新byte[]

  132. */

  133. public static byte[] getByteArr(byte[]data,int start ,int end){

  134. byte[] ret=new byte[end-start];

  135. for(int i=0;(start+i)<end;i++){

  136. ret[i]=data[start+i];

  137. }

  138. return ret;

  139. }

  140. /**

  141. * 流转换为byte[]

  142. * @param inStream

  143. * @return

  144. */

  145. public static byte[] readInputStream(InputStream inStream) {

  146. ByteArrayOutputStream outStream = null;

  147. try {

  148. outStream = new ByteArrayOutputStream();

  149. byte[] buffer = new byte[1024];

  150. byte[] data = null;

  151. int len = 0;

  152. while ((len = inStream.read(buffer)) != -1) {

  153. outStream.write(buffer, 0, len);

  154. }

  155. data = outStream.toByteArray();

  156. return data;

  157. }catch (IOException e) {

  158. return null;

  159. } finally {

  160. try {

  161. if (outStream != null) {

  162. outStream.close();

  163. }

  164. if (inStream != null) {

  165. inStream.close();

  166. }

  167. } catch (IOException e) {

  168. return null;

  169. }

  170. }

  171. }

  172. /**

  173. * byte[]转inputstream

  174. * @param b

  175. * @return

  176. */

  177. public static InputStream readByteArr(byte[] b){

  178. return new ByteArrayInputStream(b);

  179. }

  180. /**

  181. * byte数组内数字是否相同

  182. * @param s1

  183. * @param s2

  184. * @return

  185. */

  186. public static boolean isEq(byte[] s1,byte[] s2){

  187. int slen=s1.length;

  188. if(slen==s2.length){

  189. for(int index=0;index<slen;index++){

  190. if(s1[index]!=s2[index]){

  191. return false;

  192. }

  193. }

  194. return true;

  195. }

  196. return false;

  197. }

  198. /**

  199. * byte数组转换为Stirng

  200. * @param s1 -数组

  201. * @param encode -字符集

  202. * @param err -转换错误时返回该文字

  203. * @return

  204. */

  205. public static String getString(byte[] s1,String encode,String err){

  206. try {

  207. return new String(s1,encode);

  208. } catch (UnsupportedEncodingException e) {

  209. return err==null?null:err;

  210. }

  211. }

  212. /**

  213. * byte数组转换为Stirng

  214. * @param s1-数组

  215. * @param encode-字符集

  216. * @return

  217. */

  218. public static String getString(byte[] s1,String encode){

  219. return getString(s1,encode,null);

  220. }

  221. //测试

  222. public static void main(String []args){

  223. System.err.println(isEq(new byte[]{1,2},new byte[]{1,2}));

  224. }

  225. /**

  226. * 字节数组转16进制字符串

  227. * @param b

  228. * @return

  229. */

  230. public static String byteArrToHexString(byte[] b){

  231. String result="";

  232. for (int i=0; i < b.length; i++) {

  233. result += Integer.toString( ( b[i] & 0xff ) + 0x100, 16).substring(1);

  234. }

  235. return result;

  236. }

  237. /**

  238. * 16进制字符创转int

  239. * @param hexString

  240. * @return

  241. */

  242. public static int hexStringToInt(String hexString){

  243. return Integer.parseInt(hexString,16);

  244. }

  245. /**

  246. * 十进制转二进制

  247. * @param i

  248. * @return

  249. */

  250. public static String intToBinary(int i){

  251. return Integer.toBinaryString(i);

  252. }

  253. }


android byte的使用就讲完了
就这么简单。

android byte的使用_谢岩的博客-CSDN博客​blog.csdn.net
d9137dd709e63fad18bd2863e5f5ff36.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521220.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apache RocketMQ 正式开源分布式事务消息

摘要&#xff1a; 近日&#xff0c;Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能&#xff0c;减少内存使用等原有特性增强&#xff0c;还修复了部分社区提出的若干问题&#xff0c;更重要的是该版本开源了社区最为关心的分布式事务消息&#xff0c;而且实现…

如何使用阿里云ARMS诊断Java服务端报错问题

摘要&#xff1a; 这是ARMS团队推出的“网站常见问题1分钟定位系列篇”第二文。 我的网站为什么一错再错 网页报错&#xff0c;尤其是5XX错误是互联网应用最常见的问题之一。5XX错误通常发生于服务端。服务端是业务逻辑最复杂&#xff0c;也是整条网络请求链路中最容易出错、出…

.iml文件_jetbrains误删maven 项目.iml文件后的处理方法

jetbrains 打开maven项目&#xff0c; 出现如下提示这个时候打开 Terminal在提示符下输入&#xff1a;mvn idea:module 回车运行&#xff0c;就可以修复。Relationship between .iml file and pom.xml fileThe intelliJ idea doesnt understand the maven project model (POM.x…

亚马逊消费者业务宣布永久关闭 Oracle 数据库,去O新进展;华为发布最新5G全系列解决方案;苹果正研究新设备“智能戒指”……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...

北京时间8月25日&#xff0c;中超大连赛区的第7轮较量&#xff0c;广州恒大迎战大连人&#xff0c;恒大取胜即可继续位列榜首&#xff0c;同时获得半程冠军。而对于前6轮不胜的大连人来说&#xff0c;已经被逼上了绝境。虽然大连人晋级争冠组的前景极为渺茫&#xff0c;但一胜难…

Sentinel如何通过限流实现服务的高可用性

摘要&#xff1a; 在复杂的生产环境下可能部署着成千上万的服务实例&#xff0c;当流量持续不断地涌入&#xff0c;服务之间相互调用频率陡增时&#xff0c;会产生系统负载过高、网络延迟等一系列问题&#xff0c;从而导致某些服务不可用。如果不进行相应的流量控制&#xff0c…

京信通信:数据智能为生产调试“增效瘦身”

摘要&#xff1a; “数据驱动测试优化&#xff0c;突破自动测试边界&#xff0c;赋能智慧测试新模式。”——京信智能制造副总经理葛鑫 “进入车间&#xff0c;映入眼帘的是一条长约20 米的 O 型生产线&#xff0c;产线前三名工人和几个机器人正协同工作&#xff0c;将各种元器…

c++代码好玩_一行Python代码能干嘛?快来看看吧!有表白利器哦

python有很多优雅有趣的代码写法&#xff0c;同时还很简短&#xff0c;以至于当我刚开始接触这个编程语言的时候&#xff0c;就爱不释手。而前几天的编程语言榜单中python也超越了java成为了第一&#xff0c;挺替python开心的。python到底有多有趣呢&#xff1f;一行代码告诉你…

探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Mr-Bruce转自 &#xff5c; CSDN博客责编 | 阿秃几周前&#xff0c;笔者做了一个与HDFS有关的技术分享&#xff0c;以知识普及为目的&#xff0c;主要分享了Hadoop发展历史、HDFS核心概念、整体架构、工作机制等内容。本文大…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(配置数据库监听_09)

修改dbca.rsp响应文件中的重要参数 su - oracle cd response/ vim dbca.rsp本次安装过程中设置了下列参数&#xff1a;(注意下面参数视情况而定&#xff0c;不要照抄&#xff0c;原文件都有说明的) RESPONSEFILE_VERSION "11.2.0" #不能更改 OPERATION_TYPE "…

如何量化考核技术人的 KPI?

摘要&#xff1a; 为什么需要技术KPI&#xff1f; 在业务技术团队&#xff0c;有一个不好的趋势就是团队越来越业务&#xff0c;越来越没有技术味道。每个人都在谈业务&#xff0c;技术大会上在谈业务&#xff0c;周会上在聊业务&#xff0c;周报里写的是业务项目...... 唯独少…

pandas绘图_pandas与seaborn可视化对比小案例

Python网络爬虫与文本数据分析(视频课)之前分享过pandas也是可以作图的&#xff0c;今天复习一下pandas作图&#xff0c;并与seaborn做对比&#xff0c;熟悉下各自绘图的特点。导入用到的库import pandas as pdimport matplotlib.pyplot as pltimport seaborn as sns%matplotli…

docker安装zookeeper_Docker安装Zookeeper以及Zookeeper常用命令

Docker安装Zookeeper下载并运行$ docker search zookeeper # 查看一下镜像$ docker pull zookeeper:3.4.9 # 拉取指定版本zk镜像$ docker images # 查看image ID$ mkdir -p /root/docker/zookeeper/data $ docker run -d -p 2181:2181 -v /root/docker/zookeeper/data:/data/…

复杂 SQL 查询跑不动?DRDS 只读实例来解决!

摘要&#xff1a; 在实际业务生产环境中&#xff0c;业务应用系统在使用 OLTP 数据库将数据进行存储后&#xff0c;均会存在如后台运营类系统进行统计报表分析等场景的复杂 SQL 查询诉求。 背景 在实际业务生产环境中&#xff0c;业务应用系统在使用 OLTP 数据库将数据进行存储…

三年一跳槽、拒绝“唯学历”,火速 Get 这份程序员求生指南!

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 郭芮责编 | 阿秃根据埃文斯数据公司&#xff08;Evans Data Corporation&#xff09;2019 最新统计的数据显示&#xff0c;2018 年全球共有 2300 万软件开发人员&#xff0c;预计到 2019 年底这个数字将达到 2640 万。但在这…

Oracle的instantClient的安装配置(都是64位)

背景&#xff1a;本地没有安装oracle客户端和服务端&#xff08;最简单&#xff09; 文章目录一、远程连接方案二、软件下载2.1. 官网下载instantclient2.2. 解压2.3. 位置前移2.4. 创建目录和监听文件2.5. 添加监听信息2.6. 设置以下环境变量2.7. plsql配置2.8. 重启启动一、远…

如何利用阿里视频云开源组件,快速自定义你的H5播放器?

摘要&#xff1a; Aliplayer希望提供一种方便、简单、灵活的机制&#xff0c;让客户能够扩展播放器的功能&#xff0c;并且Aliplayer提供一些组件的基本实现&#xff0c;用户可以基于这些开源的组件实现个性化功能&#xff0c;比如自定义UI和自己App server的交互等等&#xff…

vmware 蓝屏_网络安全小百科--利用微软CVE 2019-0708漏洞让对方系统蓝屏死机

漏洞背景:Windows 系列服务器于 2019 年 5 月 15 号&#xff0c;被爆出高危漏洞&#xff0c;该服务器漏洞利用方式是通过远程桌面端口3389进行攻击的。这个漏洞是今年来说危害严重性最大的漏洞&#xff0c;跟之前的永恒之蓝病毒差不多。2019年9月7日晚上凌晨 1 点左右&#xff…

instantclient使用步骤

1、 解压缩instantclient后&#xff08;假定目录为&#xff1a;G:\instantclient_11_2_64&#xff09; 把oracle安装目录下的G:\oracle\product\11.2.0\dbhome_1\NETWORK 文件夹复制到instantclient安装目录&#xff0c; 修改instantclient目录下的NETWORK\ADMIN\tnsnames.ora文…

NLP中的迁移学习

摘要&#xff1a; 迁移学习正在各个领域大展拳脚&#xff0c;NLP领域正在受到冲击&#xff01; 在我们之前的文章中&#xff0c;我们展示了如何使用CNN与迁移学习为我们自己创建图片构建分类器。今天&#xff0c;我们介绍NLP中迁移学习的最新趋势&#xff0c;并尝试进行分类任…