关于字节处理函数的问题

larkim82 2019-07-06 08:55:50
跟某硬件做接口,对方提供的数据是字节流,我通过socket监听到字节流后,需要对字节流做相应的处理,现在需要三个不同的处理函数,来进行处理。

1、取整数 int getInt(byte[] bytes, int startIndex, int len)

2、取实数 double getDouble(byte[] bytes, int startIndex, int len, int ratio)

3、取字符串 String getStr(byte[] bytes, int startIndex, int len)

参数含义:
bytes 接收到的数据包(字节流)
startIndex 本信息域在字节流中的起始索引
len 本信息域所占用的字节数
ratio 小数位数,如果该参数是1,则表明整数部分的分辨率是0.1,即整数部分需除以10才是真正的数据域;
如果该参数位2,则表示整数值的分辨率是0.01,即整数值需除以100才是真正的信息域数值。


哪位高手能帮我写一个啊,太偏底层了,读书不努力,现在写不出来啊!
...全文
148 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我是周星星VIP 2019-07-08
  • 打赏
  • 举报
回复
1楼说得对,这个得给钱,给分不顶用。自己的工作任务想都不想,直接丢上来要别人做是啥意思
qybao 2019-07-08
  • 打赏
  • 举报
回复
不好意思,把i=0改成i=startIndex
qybao 2019-07-08
  • 打赏
  • 举报
回复
字节转换为相应的数据,应该是最基础的知识。抛砖引玉,给你个例子
int getInt(byte[] bytes, int startIndex, int len) { //异常系这里不考虑
int n = 0x00;
for (int i=0; I<len; i++) { //如果是低位在前,则反过来循环
n = n << 1; //高位左移
n = n | bytes[i]; //低位或运算
}
return n;
}
double从你的要求来看应该是转成long(方法同上),然后再除以10的ratio次方
String可以直接用byte数组new,注意编码就可以



强大的农民 2019-07-08
  • 打赏
  • 举报
回复
这个应该是要给钱,给分没人来写。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧