【在线急救】在jsp页面打印byte[]数据,多了一个字节数据出来

海盗2019 2005-05-31 05:40:20
方法定义:
public byte[] toBytes()
{
ByteBuffer bb = ByteBuffer.allocate( 12 );
bb.order( ByteOrder.LITTLE_ENDIAN );
bb.putInt( 0, cmdId );
bb.putInt( 4, cmdBodyLen );
bb.putInt( 8, seqId );
....
return bb;
}

jsp中调用:
out.print( new String( pk.toBytes() ) );

其中,cmdId = 80002、cmdBodyLen = 132、seqId =2, 都是int型的。

02 35 0C 00 C2 84 00 00 00 02 00 00 00

实际数据:在 cmdId 和cmdBodyLen 中间多了一个字节的数据,十六进制 C2。

为什么呀?请帮忙解答啊。:(
...全文
240 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
海盗2019 2005-06-02
  • 打赏
  • 举报
回复
问题已经解决:
只要是转码,都会出现不规则的二进制异常数据。
系统没人是iso的,把需要转车utf-8的数据先转了,然后存入字节数组中,最后在jsp中调用的时候,设置编码还是iso的(默认),直接输出即可。

帮忙顶下有分哦!
:D:D
Rabbit8 2005-06-02
  • 打赏
  • 举报
回复
我顶,你把你的解决方法贴出来吧,呵呵
氘火 2005-06-02
  • 打赏
  • 举报
回复
海盗2019 2005-06-02
  • 打赏
  • 举报
回复
发现一个问题,只要是整型数大致超过 8020000,十六进制数就会变成6位,在ultraedit中查看,会有跳位的情况。

咋回事呢??
海盗2019 2005-06-01
  • 打赏
  • 举报
回复
当 int cmdId = 9000000 的时候,又出错了。
十六进制数应该是 40 54 89 00 嘛,现在变成了 40 54 EF BF BD 00

彻底晕倒啊,…… :(
海盗2019 2005-06-01
  • 打赏
  • 举报
回复
偷懒没写全,两位眼睛毒啊。
现补全toBytes(),如下:

public byte[] toBytes()
{
ByteBuffer bb = ByteBuffer.allocate( Const.LEN_HEAD_PACK );
bb.order( Const.BYTE_ORDER );
bb.putInt( 0, cmdId );
bb.putInt( 4, cmdBodyLen );
bb.putInt( 8, seqId );

byte[] b = new byte[Const.LEN_HEAD_PACK + cmdBodyLen];
System.arraycopy( bb.array(), 0, b, 0, Const.LEN_HEAD_PACK );
if ( cmdBodyLen > 0 )
{
System.arraycopy( cb.toBytes(), 0, b, Const.LEN_HEAD_PACK,
cmdBodyLen );
}
return b;
}
jFresH_MaN 2005-05-31
  • 打赏
  • 举报
回复
faint
lxleaves 2005-05-31
  • 打赏
  • 举报
回复
public byte[] toBytes()
{
ByteBuffer bb = ByteBuffer.allocate( 12 );
bb.order( ByteOrder.LITTLE_ENDIAN );
bb.putInt( 0, cmdId );
bb.putInt( 4, cmdBodyLen );
bb.putInt( 8, seqId );
....
return bb;
}
bb 不是ByteBuffer嘛
海盗2019 2005-05-31
  • 打赏
  • 举报
回复
我顶!这会好像又正常了。:*
源码链接: https://pan.quark.cn/s/a4b39357ea24 微信小程序是由腾讯公司设计的一种轻量级应用开发平台,主要面向移动设备,旨在为用户带来无需下载安装即可直接使用的应用服务体验。在微信小程序的开发实践中,"模仿美团菜单 swiper分类菜单"是一项常见的技术应用,其目的是达成与美团外卖应用相似的交互模式,使用户能够轻松地浏览和挑选各种商品或服务。 在微信小程序的技术体系中,`swiper`组件属于轮播图功能模块,通常用于呈现多张图片或卡片式的切换界面,能够达成动态滑动展示不同分类菜单的功能。在模拟美团菜单的应用情境下,`swiper`组件一般与`swiper-item`组件协同工作,每一个`swiper-item`对应一个分类,用户可通过左右滑动来切换不同的分类菜单。 为了达成这样的功能,首先需要在微信小程序的`json`配置文档中引入`swiper`组件,并在`wxml`结构文档中构建相应的布局代码,将每个分类以`swiper-item`的形式进行组织。同时,需要在`wxss`样式文档中定义恰当的样式,保证分类菜单的视觉呈现符合设计规范。 接下来,我们将在`js`逻辑文档中处理`swiper`的切换逻辑,通过监听`bindchange`事件来识别当前选中的分类,并根据这一信息动态获取对应的子菜单信息。为了达成类似美团的层级菜单功能,可能还需要借助`picker`或`navigator`组件来展示二级分类或商品详情。 在开发阶段,需要关注以下关键点: 1. 数据绑定:保证数据与界面之间的双向链接准确无误,以便在选择分类时即时更新显示内容。 2. 动态加载:针对大量数据,可能需要采取异步加载机制,防止一次性加载过多内容引发性能瓶颈...

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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