精华内容
下载资源
问答
  • C#byte类型

    千次阅读 2019-01-04 09:00:45
    byte类型的范围是0~255 转换为二进制是00000000~11111111 C#中对byte类型的处理还是很特殊的。 下面用几行简单的代码来说明问题 byte x=1; byte y=2; byte z=x+y; //error:无法将int类型转换为byte类型 1.可能很多会...

    byte类型的范围是0~255
    转换为二进制是00000000~11111111
    C#中对byte类型的处理还是很特殊的。
    下面用几行简单的代码来说明问题
    byte x=1;
    byte y=2;
    byte z=x+y; //error:无法将int类型转换为byte类型
    1.可能很多会认为这段代码没有问题,实际上第三行会产生编译错误:无法将int类型转换为byte类型!
    2.因为C#编译器会认为byte类型和byte类型运算的结果是int型,实际上对short类型也做了相似的处理。
    3.至于为什么这样设计,因为byte或short类型相互运算比较容易发生溢出,所以在运算的时候直接都转换为int来运算了。
    4.再看下面的代码
    byte i=1; //OK
    这里的字面值1是被编译器识别为int类型的,在以上声明中,整数1
    从 int 类型隐式转换为 byte 类型。如果整数超出了 byte 类型的范围,则将发生编译错误。
    5.上面是MSDN中的说法,实际上这个隐式转换违背了范围小的类型可以隐式转换为范围大的类型这条规则,但是在C#中这个转换的确是合法的。
    注意这个转换只有用整型的字面值来赋值运算的时候才成立,像这样就不可以了
    int x=1;
    byte i=x; //error: 无法将int类型转换为byte类型
    6.在看下面的代码:
    byte i=1;
    i+=1; //OK
    这行代码是可以通过的,原因是C#中x+=y并不是总相当于x=x+y的!
    如果x+y的结果的类型可以隐式转换为x的类型,那么x+=y相当于x=x+y
    如果x+y的结果的类型可以显式转换为x的类型,并且x=y也合法,那么x+=y相当于x=(T)(x+y),其中T是x的类型。
    7.就像上面这行代码,i+1是int类型的,可以显式转换为byte类型,而i=1也合法,所以i+=1就相当于i=(byte)(i+1)
    i=i+1; //error:无法将int类型转换为byte类型
    这行比较容易理解,1被编译器识别为int类型,所以i+1的结果是int类型的,无法将int类型转换为byte类型

    展开全文
  • int类型直接赋值给byte类型

    千次阅读 2020-01-21 15:13:11
    居然可以直接将int类型的127,10,20赋值给byte类型的test,test1,test2; 了解一下byte和int类型的取值范围: byte类型,Java为其分配了一个字节内存,占8位,所有取值范围是:-2^7 ~ 2^7-1 ; 也就是 ...

    今天在复习Java基础数据类型转换时,发现了一个问题:

    byte test = 127 , test1 = 10 ,test2 = 20 ;

    居然可以直接将int类型的127,10,20赋值给byte类型的test,test1,test2;

    了解一下byte和int类型的取值范围:

    byte类型,Java为其分配了一个字节内存,占8位,所有取值范围是:-2^7 ~ 2^7-1 ; 也就是 -128 到 127 ;

    int类型,Java为其分配了四个字节内存,占32位,所有取值范围是:-2^31 ~ 2^31-1 ; 也就是 -2147483648 到 2147483647 ;

    那么为什么可以直接赋值呢?

    原来是因为系统有一个自动转换功能(也就是进行了底层转换,效果和 byte test = (byte) 127 ; 是一样的),只要赋予byte的值不超过byte的取值范围,系统都会自动帮你转换;

    不过当赋予的值超过了byte类型的取值范围,那就要手动进行数据类型转换了,不然系统程序就报错了;

    如: byte test3 = 128 ;    //报错:Type mismatch: cannot convert from int to byte 

    改为:byte test3 = (byte) 128 ; 就可以了

    其中char、short类型也是一样的,当赋予int类型的值不超过这些类型的取值范围,那系统就会自动进行数据类型转换了;


    还有一个的问题,如下代码所示:

    byte test = 20 , test1 = 30 ;
    byte test4 = test + test1 ;   //错误:Type mismatch: cannot convert from int to byte

    为什么两个byte相加就错误呢?

    原来是因为:系统防止两个数进行相加后的值有可能会溢出的危险,所以进行了数据类型自动转换。

    例如以上改为:

    byte test = 127 , test1 = 1 ;
    byte test4 = test + test1 ;   //那么test和test1在相加时就超出了bute类型的取值范围了

    所以系统为了防止两个数进行相加后的值超过了原有的类型的取值范围,所以就进行了自动数据类型转换,因此出现了以上的错误问题;

    也就是 byte test4 = test + test1 ;   相当于 byte test4 = (int) test + (int) test1;  所以就报错了 。

    解决:

    将 byte test4 = test + test1 ;  改为 byte test4 =  (byte)( test + test1 ) ; 就可以了;


    特别需要注意的地方:

    当将一个 int类型的常量 赋值给 byte 类型变量 是可以的,以上已经进行了说明,但是将一个 int类型的变量 赋值给 byte 类型的变量时,是错误的,需要进行类型的强制转换;

    如下代码所示:

    byte test = 127 , test1 = 1 ;  //正确
    
    int testt = 10 ; 
    byte testb = testt ;  //错误:Type mismatch: cannot convert from int to byte
    
    

    修改:byte testb = (byte) testt ;  

     

     

     

    展开全文
  • java byte类型

    2018-03-12 09:47:52
    今天在将16进制数0xAA转成byte时,发现结果是-86。怎么出来负数,后来查了下,才明白,java的byte类型数据为只占7位,还有一位是符号位。
    今天在将16进制数0xAA转成byte时,发现结果是-86。怎么出来负数,后来查了下,才明白,java的byte类型数据为只占7位,还有一位是符号位。
    展开全文
  • byte类型运算细节

    万次阅读 2017-08-14 20:58:14
    大家都知道,在Java中整数默认的数据类型是int类型,当我们使用byte的时候就要小心了,因为如果两个byte类型的变量相加结果赋给一个byte类型的变量是会编译错误的。请看下列代码: 此处报了一个编译错误:类型不...
    • 大家都知道,在Java中整数默认的数据类型是int类型,当我们使用byte的时候就要小心了,因为如果两个byte类型的变量相加结果赋给一个byte类型的变量是会编译错误的。请看下列代码:
      这里写图片描述
      此处报了一个编译错误:类型不匹配:不能从 int 转换为 byte。
      为什么会报这样一个错误呢?明明我b1,b2都是byte类型的数据,b1,b2相加的值也没有超过byte所能表示的最大范围,这个错误的原因是什么呢。接下来,为你说明原因。
      b1,b2是两个byte的数据不错,但是同时b1,b2也是两个变量,两个变量相加之后的值是多少(也就是说有可能超过byte所能表示的最大范围),我们不得而知,当然java也就不得而知了,所以java就将b1,b2相加的结果自动的提升为int类型,也就是java整数的默认数据类型,所以此时会报一个这样的编译错误。
    • 再看如下代码:
      这里写图片描述
    • 此时的代码就没有了编译错误。因为赋值语句的右边是两个常量,我们知道它们的和不会超过byte所能表示的最大范围,当然java也知道,所以不会报编译错误。
      上面的话通过下图可以验证:
      这里写图片描述
      因为byte所能表示的最大整数是127,127+3显然超过了byte所能表示的最大范围,此时编译错误:类型不匹配:不能从 int 转换为 byte
      结论:当一个整数的值到了int的表示范围就自动转换成int,即使原来是byte类型
    展开全文
  • OKevin GitBook:《探寻Java中的设计模式》 ... 博客园 首页 ...今天在读《Java网络编程》这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方。这个地方有点细节,不...
  • byte类型相加的问题

    千次阅读 2019-05-22 19:57:33
    byte类型运算的问题1.b = 1;2.b = b1+b2;3.b=3+4;4.b++;5.b = b + 1;6.b = 128; byte b1 = 3, b2 = 4, b; 1.b = 1; 检查右边是否在-128~127之间,超过这个数值便会报错。 2.b = b1+b2; 会报错,因为byte类型...
  • integer是不能直接转换为byte类型的,但是可以转换成int,然后强制转换成byte。 Integer i = 1; byte b = (byte)i.intValue();
  • c++中的byte类型

    万次阅读 2018-11-15 07:42:52
    c++中没有byte类型,替代的方法是使用unsigned char a[3],可以当作字节数组使用  
  • byte类型数据

    千次阅读 2017-01-16 18:40:24
    Java的byte类型的数据范围是从 -128 到 127一直在想为什么不是 -128 到 128呢? 首先我们得明白一件事情,那就是运算规则: 正数的最高位都是 0 ,正数的值就是二进制表示的值。  负数的最高位都是 1 ,负数的值...
  • byte类型与double类型的互相转化

    千次阅读 2018-11-23 18:09:28
    byte类型转化成double类型 public static double convert(byte[] data) throws IOException { DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); double num = dis.readDouble(); ...
  • Java中的byte类型

    千次阅读 2019-05-14 19:11:45
    在一次小项目中,使用了Java与QT进行TCP的通信,Java中只需要将要发送的字节数据写入OutputStream变量,然后write即可发送,但OutputStream.write只接受byte类型数据,若发送一个int数据则需要拆分为4个byte;...
  • Java中byte类型的范围

    万次阅读 多人点赞 2019-03-20 18:49:55
    在java中byte类型占8位 表示的范围是0000 0000 ~ 1111 1111 总共256个数, java中byte类型有正负,最高位表示正负,0为正,1为负。 我们先看正数: 0000 0000 ~ 0111 1111(原码)( 0 ~ 127,共128个数)我们...
  • Python3新增的Byte类型

    千次阅读 2019-02-15 11:30:24
    Python3新增的Byte类型 在python2中字节类型同字符类型区分不大,但是在python3中最重要的特性是对文本和二进制数据做了更加清晰的区分。 文本总是Unicode,由字符类型表示,而二进制数据则由byte类型表示。 ...
  • BYTE类型的使用

    千次阅读 2013-10-11 13:35:57
    BYTE类型的使用: BYTE在VC的定义为Unsingned char,在语义上九可以理解为单个字符 类型,而在实际应用中BYTE泽多应用在数据类型的使用上,如16进制数组(用于表示数据流) ,在本次使用的IP地址控件中用于...
  • 有一个String ``` String e = "aa"; ...byte[] a = new byte[] { 0x01, (byte) 0xFF, 0x0A, 0x00, (byte) 0xAA, 0x13,}; ``` 现在要把byte f 和byte[] a进行拼接 怎么讲byte f转成byte 数组!
  • Python int与byte类型相互转化

    万次阅读 2018-12-24 15:08:34
    根据Python自定义的功能,使用to_bytes函数转化int类型数据为byte型,然后使用from_bytes将byte类型数据转化为int型。 def to_bytes(self, length, byteorder, *args, **kwargs): # real signature unknown; NOTE: ...
  • 单位中有个加密算法,使用java 写的,我想用 python 实现同样的方法,但是 python中没有 byte 类型,请问应该怎么处理 ,python3要实现 以下代码 应该怎么写呢? java 代码如下: public static byte[] ...
  • 最近遇到int 与 byte 类型数据相互转换的问题; 学习到一段代码,觉得有用,先记录下来: 1: byte to int public int ByteToInt(byte b) { return (int)(b & 0x000000ff); } 2: int to byte public byte Int...
  • 作者 | 进击的石头--GO!...Java也提供了一个byte数据类型,并且是基本类型。java byte是做为最小的数字来处理的,因此它的值域被定义...下面这篇文章主要给大家介绍了关于java中byte类型的相关资料,需要的朋友可以参...
  • int类型强制转换为 byte类型

    千次阅读 2016-11-25 16:29:17
    Java代码 byte类型" style="margin:0px; padding:0px; border:0px; list-style:none"> public class Test {   public static void main(String[] args) {   int start = -131;   int ...
  • mybatis 中,对于 byte 类型的比较 mybatis 中,对于 byte 类型的比较 。只需要 test != null 就行。 在 mybatis 中对 if 做条件判断的时候,经常用的是 "test != null && teat != ' ...
  • BYTE/byte并不是C/C++自身的关键字,在VC中是这样定义的:typedef unsigned char byte;typedef unsigned char BYTE;char为8位有符号整数,范围为-128-----+127所以BYTE/byte类型就是8位符号整数,范围从0-----255
  • python3新增的byte类型

    万次阅读 2018-01-27 22:46:12
    在python2中字节类型同字符类型区分不大,但是在python3中最重要的特性是对文本和二进制数据做了更加清晰的区分,文本总是Unicode,由字符类型表示,而二进制数据则由byte类型表示,python3不会以任意隐式方式混用...
  • 首先我们知道,当byte和int类型的数据进行运算,编译时会把byte的变量的值提升为int类型再进行运算,这是如果你将他们二者的结果赋值给int类型的变量的话,即使没有溢出也会导致报错. 但是我们发现如果两个变量都是byte...
  • Java:简述Java中byte类型和int类型之间的转换 提示:计算机中数据都是通过补码存储的,对于正数的表示就是二进制原码(因为正数的反码和补码都是原码),对于负数的表示用补码(负数的反码为原码符号位外其他位...
  • java中的byte类型

    2011-11-30 11:32:47
    byte类型是在系统中占1个字节,共占8位。 byte类型将0x00-0xff映射成0到127和-128到-1两段。 int类型的0到127对应byte类型的0到127 int类型的-128对应byte类型的-128,依次类推,255对应-1 测试代码:  public...
  • 面试的时候会遇到int类型和byte类型转换相关的问题。查阅相关资料后总结记录以备忘: C中int型占4个字节32位,byte型占1个字节8位。 1、int型转byte型 这种情况比较简单。取int型的低八位赋值给byte型即可 2、byte...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,974
精华内容 19,589
关键字:

byte类型