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来转换就可以,比这个方便。



  • 相关阅读:
    Java ES api 查询例子
    leveldb学习
    Viewstamp Replication协议
    PacificA协议
    vhost架构
    数据分片方法
    常见分布式存储系统架构分析
    数据存储(B+树 vs LSM树)
    paxos算法理解
    Raft协议理解
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3201292.html
Copyright © 2011-2022 走看看