关于string转换成byte后字符串改变的问题

孬毛毛 2003-05-26 05:09:59


我用rs.getString(3)在数据库中取字段,该字段值为[B@e232b5

为什么用byte[] p=rs.getString(3).getBytes();后
out.print(p)显示的结果是[B@df1832而不是数据库中的[B@e232b5

为什么出现这种情况??怎么样才能使去出的byte[] p 的值等于数据库中的数值??
...全文
195 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
woodpeng 2003-06-03
  • 打赏
  • 举报
回复
我也遇到了这个问题,不知怎么回事,关注!
孬毛毛 2003-05-26
  • 打赏
  • 举报
回复
如果我原有一个byte[] byt= [B@e328e0

再用String str=byt.toString();或String str=new String(byt)把byt转成String型

然后再用 byte[] byt2=str.getBytes()把String型转回byte[] 型,那么这个byt2与之前哪个byt是否完全相同呢???

实践证明好象不一样了吧??

请高手们回答我啊,多谢了~~~~~~~~~
孬毛毛 2003-05-26
  • 打赏
  • 举报
回复
如果我原有一个byte[] byt= *****

再用String str=byt.toString();或String str=new String(byt)把byt转成String型

然后再用 byte[] byt2=str.getBytes()把String型转回byte[] 型,那么这个byt2与之前哪个byt是否完全相同呢???

实践证明好象不一样了吧??
littlecong 2003-05-26
  • 打赏
  • 举报
回复
那应该不是你的字符串的值
而是地址
nothing 2003-05-26
  • 打赏
  • 举报
回复
你的out.print(p)只是调用了PrintStream.print(Object)而已
nothing 2003-05-26
  • 打赏
  • 举报
回复
问题出在out.print(p)


PrintStream并没有print(byte[])方法,你的out.print(p)只是调用了PrintStream(Object)而已,即相当于调用了out.print(p.toString())

其他都没问题.
java中byte占8位,char占16位,所以如果字串中有非ASCII字符的话若想原样取出字串中的字符建议用String.getChar().

67,549

社区成员

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

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