java byte 赋值问题

Python020

java byte 赋值问题,第1张

首先  0xa9的值是 169   所以 a=169-127-128=-86  因为有0的位置  ,所以是-87

下面  Byte.decode,查看源码便可以知道

转成了integer,也就是 169  ,下面判断了 是否 在 -128到 127之间,很明显 ,不在 ,所以报错 !

位运算啊! 自己写个方法 /**对位赋值操作 参数: CtrlF:控制标志位(我觉得你应该是这个意思。) index:需要复制的标志位位置 value:需要付给的值 */ public void setCtrlF(byte CtrlF,int index,byte value){ if(value<0||value>1){ return//出错,赋值非0,1。如果想要优雅点,你应该在这里抛出自己的异常。 } value<<index//value左移index位 CtrlF= CtrlF ^ value//异或value }

byte short int long

这几种类型都是java中的整数类型

你肯定对int比较了解,byte和int的区别是int是32位,byte是8位,表示的数字范围为:-128到+127

所以

第一个byte中元素都没超过范围,都以数字显示。第二个byte数组中的元素都是char类型,char类型是占16位的,一般转换为byte是由大到小,需要强制转换,但这些char并没有超出byte的范围,所以不用

在打印时会将char元素转换成对应的ascii码,具体你可以去查

toString的确是输出字母,但'a'是字符,不是字符串,两个完全不同的概念

字符串+primitive类型就是转换为字符型的最简单方法,例:

4+"" 将数字4转换为字符串4 现在的4不再是数字,而是字符串,懂?