CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  J2SE / 基础类

这段程序怎么造成会出界阿?(short类型转成byte[2])

楼主alphazhao(迷路飞羊)2002-04-17 14:36:17 在 Java / J2SE / 基础类 提问

short   st   =   -27995;  
  byte[]   stBt   =   new   byte[2];  
  st2Bt   =   ShortToBytes.shortTo(st2);  
  //此处溢出  
  请问是为什么?short   to   byte[2]转换如下  
   
  public   class   ShortToBytes   {  
      public   static   byte[]   shortTo(short   s)   {  
          byte[]   buf   =   new   byte[2];  
          int   pos;  
          for   (pos   =   0   ;   pos   <   2   ;   pos++)   {  
              buf[pos]   =   (byte)   (s   &   0xff);  
              s   >>=   8;  
              if   (s   ==   0)   break;  
          }  
          byte[]   rt   =   new   byte[pos   +   1];  
          for   (int   j   =   0   ;   j   <=   pos   ;   j++)   {  
              rt[j]   =   buf[j];  
          }  
          return   rt;  
      }  
  }  
  问题点数:20、回复次数:3Top

1 楼keios(C->C++->java->C 循环中)回复于 2002-04-17 14:49:27 得分 5

buf长度是2,而rt的长度可能是3?  
  莫非是有符号移位高位补1?  
   
   
  Top

2 楼alphazhao(迷路飞羊)回复于 2002-04-17 14:53:01 得分 0

short类型不是2个字节么?  
  我一个一个字节取出来,应该不会溢出阿  
  Top

3 楼knight_qmh(辉)回复于 2002-04-17 15:29:28 得分 15

public   class   ShortToBytes   {  
      public   static   byte[]   shortTo(short   s)   {  
          byte[]   buf   =   new   byte[2];  
          buf[0]   =   (byte)((s   >>>   8)   &   0xFF);  
          buf[1]   =   (byte)(s   &   0xFF);  
          return   buf;  
      }  
  }  
  Top

相关问题

  • BYTE转成DWORD 。。。
  • 怎样把BYTE* 转成 VARIANT?
  • byte流怎么转成Image
  • 怎样把byte转成string?
  • 如何将byte[]转成String类型?
  • 求助!如何将String转成byte[]
  • 我在将byte[]转成string ,再转成byte[]后,两个byte[]怎么不一样长 怎么解决啊
  • unsigned short 如何转成一个数?
  • 如何把strings类型转成byte()类型?
  • 请问大于127的ascii怎么转成byte或者char

关键词

  • shorttobytes
  • shortto
  • short
  • byte
  • pos
  • st

得分解答快速导航

  • 帖主:alphazhao
  • keios
  • knight_qmh

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo