java对获取的字节数组bytes[]进行处理:

第一种,直接将该字节数组转换为字符串(部分)

String content = new String(dp.getData(),0,2); //从位置0开始获取2个字节

这样,对获取的数据报进行全部转换:

String content = new String(dp.getData(),0,dp.getLength()); //从位置0开始获取dp.getLength()个长度转换为字符串

通过获取从任意位置(比如0,x)处开始获取2或者dp.getLength()个字节将其转换为字符串,给予显示

之后转换为整型或者小数都可以,这是字符串转整型/浮点型的问题了

第二种办法,

将字节数组转换为十六进制,之后获取某位置开始的多少位数,再之后将该16进制通过函数或者new String 的方法转换为字符串。这样也可以达到目的

 /*** byte[] 转为16进制String*/public static String Bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperCase(); } return ret; } /*** 从一个byte[]数组中截取一部分* @param src* @param begin* @param count* @return*/public static byte[] subBytes(byte[] src, int begin, int count) {byte[] bs = new byte[count];for (int i=begin;i<begin+count; i++) bs[i-begin] = src[i];return bs;}//     转化十六进制编码为字符串public static String toStringHex(String s){byte[] baKeyword = new byte[s.length()/2];for(int i = 0; i < baKeyword.length; i++){try{baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));}catch(Exception e){e.printStackTrace();}}try {s = new String(baKeyword, "utf-8");//UTF-16le:Not
        } catch (Exception e1) {e1.printStackTrace();} return s;}

应用:

String content = new String(dp.getData(),0,dp.getLength());//2/*测试字节数组*/byte[] data=dp.getData(); String dataStr=Bytes2HexString(data);/*测试截取字节数组*/byte[] subData=subBytes(data,0,2); //截取两个字节(英文字符)  汉字(三个字节)String subDataStr16=Bytes2HexString(subData);String subDataStr=new String(subData);//toStringHex(subDataStr16);//5关闭资源
        ds.close();System.out.println(ip+"::" +port+":"+content);System.out.println("--字节数组转换为字符串"+dataStr);System.out.println("--截取子字节数组转换为16进制字符串"+subDataStr16);System.out.println("--截取子字节数组转换为字符串"+subDataStr);

效果:

全部代码:

import java.net.*;
import java.io.*;public class udpRecv
{/** 创建UDP传输的接收端* 1.建立udp socket服务,因为是要接收数据,必须指明端口号* 2,创建数据包,用于存储接收到的数据。方便用数据包对象的方法处理数据* 3,使用socket服务的receive方法将接收的数据存储到数据包中* 4,通过数据包的方法解析数据包中的数据* 5,关闭资源*抛一个大异常:IOException*/public static void main(String[] args) throws IOException{//1,创建udp socket服务DatagramSocket ds = new DatagramSocket(12345);//2,创建数据包byte[] buf =new byte[1024];DatagramPacket dp =new DatagramPacket(buf,buf.length);//3,使用接收的方法将数据包存储到数据包中ds.receive(dp);//阻塞式//4.通过数据包对象的方法,解析其中的数据String ip = dp.getAddress().getHostAddress();int port  = dp.getPort();String content = new String(dp.getData(),0,dp.getLength());//2/*测试字节数组*/byte[] data=dp.getData(); String dataStr=Bytes2HexString(data);/*测试截取字节数组*/byte[] subData=subBytes(data,0,2); //截取两个字节(英文字符)  汉字(三个字节)String subDataStr16=Bytes2HexString(subData);String subDataStr=new String(subData);//toStringHex(subDataStr16);//5关闭资源
        ds.close();System.out.println(ip+"::" +port+":"+content);System.out.println("--字节数组转换为字符串"+dataStr);System.out.println("--截取子字节数组转换为16进制字符串"+subDataStr16);System.out.println("--截取子字节数组转换为字符串"+subDataStr);}/*** byte[] 转为16进制String*/public static String Bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperCase(); } return ret; } /*** 从一个byte[]数组中截取一部分* @param src* @param begin* @param count* @return*/public static byte[] subBytes(byte[] src, int begin, int count) {byte[] bs = new byte[count];for (int i=begin;i<begin+count; i++) bs[i-begin] = src[i];return bs;}//     转化十六进制编码为字符串public static String toStringHex(String s){byte[] baKeyword = new byte[s.length()/2];for(int i = 0; i < baKeyword.length; i++){try{baKeyword[i] = (byte)(0xff & Integer.parseInt(s.substring(i*2, i*2+2),16));}catch(Exception e){e.printStackTrace();}}try {s = new String(baKeyword, "utf-8");//UTF-16le:Not
        } catch (Exception e1) {e1.printStackTrace();} return s;}}

udpS对字节数组处理

import java.net.*;
import java.io.*;public class udpSend
{/**记得抛异常*/public static void main(String[] args) throws IOException{System.out.println("发送端启动...");/**创建UDP传输的发送端* 思路:* 1.建立udp的socket服务(new socket)* 2,将要发送的数据封装到数据包中。(packet)* 3,通过udp的socket服务将数据包发送出去(send)* 4,关闭socket服务(close)**抛一个大异常:IOException*///1.udpsocket服务对象,使用DatagramSocket创建,可以指明本地IP和端口DatagramSocket ds = new DatagramSocket(8888);//2.将要发送的数据封装到数据包中String str ="12.345";//Hello--12.345byte[] buf =str.getBytes();DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),12345);//192.168.0.5//3.udp发送,使用socket服务将数据包发送出去
        ds.send(dp);//4.关闭连接
        ds.close();}
}

udpSend

总结:

其实,首先根据dp.getContent()获取的字节数组后,最简单的办法就是String str=

String(dp.getData(),x,y);即可搞定所有的,需要考虑的问题是编码问题

转载于:https://www.cnblogs.com/shuqingstudy/p/5043182.html

java对获取的字节数组进行处理相关推荐

  1. 读入的字节都写入字节数组中_使用Java将文件读入字节数组的7个示例

    读入的字节都写入字节数组中 嗨,大家好,Java程序员经常在现实世界中遇到编程问题,他们需要将文件中的数据加载到字节数组中,该文件可以是文本文件或二进制文件. 一个示例是将文件的内容转换为String ...

  2. 用Java将文件读入字节数组的7个示例

    嗨,大家好,Java程序员经常在现实世界中遇到编程问题,他们需要将文件中的数据加载到字节数组中,该文件可以是文本或二进制文件. 一个示例是将文件的内容转换为String以便显示. 不幸的是,用于表示文 ...

  3. java中图片和字节数组相互转化

    java中图片和字节数组相互转化 方案一:使用ImageIO来实现 将图片转化为字节数组 /*** 通过图片路径将图片文件转化为字符数组* * @param url 图片路径* @return byt ...

  4. java下字符串和字节数组转换

    原文章地址: java下字符串和字节数组转换 http://blog.sina.com.cn/s/blog_7e8c7d560101lwta.html 1.字节数组转换为字符串 byte[] byBu ...

  5. android 字符串转字节数组,java – 在Android中将字节数组转换为Charsequence

    将CharSequence转换为字节数组 CharSequence seq; Charset charset; ... byte[] bytes = seq.toString().getBytes(c ...

  6. 图片字节数组的获取,字节数组图片的保存

    /// <summary>/// 根据图片Url获取图片字节流/// </summary>/// <param name="imageUrl"> ...

  7. java读取字节流设置字节数组长度_java读取流数据时,字节缓存数组,第一次读取时,是否读满,才进行下次读取??...

    使用缓存字节数组读取java字节流时,第一次读取是,读满缓存字节数组大小,才进行下次读取,还是随机读一个小于数组大小的值,再进行下次读取??? 读取本地文件时,首次读取读满整个字节数组,在进行下次读取 ...

  8. java字符串转换成字节数组_将Java字符串转换为字节数组

    我有一个要加密的字节数组,然后转换为字符串,以便可以传输. 当我收到字符串时,我必须将字符串转换回字节数组,以便可以对其进行解密. 我检查了接收到的字符串是否与发送的字符串(包括长度)匹配,但是当我使 ...

  9. java下字符串和字节数组如何转换?

    1.字节数组转换为字符串 byte[] byBuffer = new byte[20]; ... ... String strRead = new String(byBuffer); strRead ...

  10. java中 如何将一个字节数组转换成字符串

    String tmpStr="我的测试";  byte[] tb = tmpStr.getBytes();  String m=new String(tb);   System.o ...

最新文章

  1. 发表了一篇英文长文:语义信息G理论和逻辑贝叶斯推理for统计学习
  2. 关于AUC计算公式推导
  3. 地址里面写转某快递会转吗_到付邮费骗局还在继续,合肥某公司中招!商标申请人要警惕!...
  4. 【Let‘s Go】Go语言入门篇
  5. mac下使用自带的apache与php
  6. java实现对文件加解密操作
  7. moodle 用户 权限_用户和社区反馈如何驱动Moodle
  8. Java JDK中的跳表实现
  9. ROS系统学习8---节点间的内存共享(初级篇)
  10. 扫描版PDF转文字Word(python3)
  11. python生成词云图_python生成词云图
  12. 破解封杀ADSL路由器解决办法全面剖析
  13. 码畜 码奴 码农 IT民工和IT其他工种的划分定义
  14. pythonturtle魔法阵_开启NLP的大魔法阵——一步一步教上手Bert的Fine Tuning
  15. Python轻松实现PDF格式转换(附详细源码)
  16. RF Python扩展测试库
  17. qt 引发了异常: 写入访问权限冲突。this 是 0x7FF700000000。
  18. 视觉设计中发现的11种光学错觉
  19. 归来仍少年•青春不散场 | CEO刘其东出席同济经管学院2022级新生入学典礼及2022年毕业典礼
  20. linux- 日志管理

热门文章

  1. Mysq 隔离级别操作
  2. Spark 理论简答
  3. scala 隐式参数入门及应用
  4. CentOS / RHEL Cachefiles 加速网络文件系统NFS访问速度
  5. Union和Union All ,
  6. 第十八届绵竹年画节开幕 大巡游展示清末年画《迎春图》场景
  7. mac上启用tftp服务器
  8. grideh SelectedRows Bookmark
  9. 写给初学asp.net的新人们 新手学习经验
  10. vmstat命令 查看内存、CPU占用