java 中2个字节(byte)拼成 short 类型 4000 的值
2013-04-11 16:28
483 查看
分类: java2012-11-12 17:32 117人阅读 评论(0) 收藏 编辑 删除
正文
java 中2个字节拼成 short 类型的值,如果用下面的函数,那就错咯,看起来很简单。
[java] view
plaincopy
public static short getShort(byte argB1, byte argB2) {
return (short) (argB1| (argB2 << 8));
}
[java] view
plaincopy
原因是argB1 会先被转成short 类型,这样如果它是负数,符号位会被扩展。
例如,它是0x80, 它会先被转成short 类型的值 0xFF80, 显然在接下来的或运算中会导致错误。
所以正确的应该是下面的函数表达的算法。
public staticshort getShort(byte argB1,byte argB2)
{
return (short)
((argB1 & 0xFF)| (argB2 << 8));
}
正文
java 中2个字节拼成 short 类型的值,如果用下面的函数,那就错咯,看起来很简单。
[java] view
plaincopy
public static short getShort(byte argB1, byte argB2) {
return (short) (argB1| (argB2 << 8));
}
[java] view
plaincopy
原因是argB1 会先被转成short 类型,这样如果它是负数,符号位会被扩展。
例如,它是0x80, 它会先被转成short 类型的值 0xFF80, 显然在接下来的或运算中会导致错误。
所以正确的应该是下面的函数表达的算法。
public staticshort getShort(byte argB1,byte argB2)
{
return (short)
((argB1 & 0xFF)| (argB2 << 8));
}
相关文章推荐
- 08.java语言基础-整数类型(byte-short-int-long)
- Java基础-数据类型int,short,char,long,float,double,boolean,byte
- Java八种基本类型(byte、short、int、long、浮点数、char、boolean、基本类型转换)
- Android学习心得(19) --- short、byte、Hex、int、ULeb128类型转化Java源码
- java可以做switch case的只有int类型,和可以自动类型转换为int的byte, char,short
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short
- 往服务器连续写7个字节的数据作为命令,但是javabyte类型的范围为-128-127。这样要转换
- Java中涉及byte、short和char类型的运算操作
- Java 字节数组类型(byte[])与int类型互转
- Java 字节数组类型(byte[])与int类型互转
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- 你真正理解java的字符类型了吗?(bit,byte,short,int等字符类型)
- Java7版本: switch语句支持String、Enum类型(JDK1.5)与原来byte、short、char和int.
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- java对byte,short,char,int,long运算时自动类型转化情况说明
- java byte、short、int、long、float、double、char基本数据类型范围
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- java中byte char short类型数据的操作说明
- java对byte,short,char,int,long运算时自动类型转化情况说明
- C的无符号数据类型int,short,byte 转为 Java对应的数据long,char,short