zoukankan      html  css  js  c++  java
  • 获取java byte的无符号数值

    byte a = (byte)234;
    System.out.println(a);

    上面的代码,结果是-22,因为java中byte是有符号的,byte范围是-128~127。

    如果想输出234,该怎么做呢,首先想到的是将a 赋给大一点的类型,如下:

    byte a = (byte)234;
    System.out.println(a);
    		
    int i = a;
    System.out.println(a);

    执行后,还是-22,因为int也是有符号的,所以a赋给i时,a的符号位在i中成为了i的符号位。

    正确方法应该是:

    byte a = (byte)234;
    System.out.println(a);
    		
    int i = a;
    System.out.println(a);
    		
    i = a&0xff;
    System.out.println(i);

    原因是:

    0xff是int,占4个字节,a是byte,占1个字节,进行&操作的细节如下:

        00000000 00000000 00000000 11101010    (a)

    &

       00000000 00000000 11111111 11111111    (i)

    ---------------------------------------------------------------------

    = 00000000 00000000 00000000 11101010

    结果是int,但是符号位是0,说明是正数,最后就是正整数234.

    其实这个方法在C语言中也可以获取有符号char的无符号值,但是C语言中可以直接使用unsigned来转换就可以,比这个方便。



  • 相关阅读:
    C库函数中字符串处理函数集合(转)
    浅谈C++底层机制
    vc2008快捷键
    Delphi格式输出的用法
    Devenv 命令行开关
    DX皮肤控制
    C#格式化
    linq查询DataView
    WCF中的session用法
    VS2012clickonce发布问题
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3201292.html
Copyright © 2011-2022 走看看