精华内容
下载资源
问答
  • 下面小编就为大家带来一篇java int转byte和longbyte的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • byte和long类型的互相转换

    千次阅读 2020-02-09 17:40:42
    这里选择借助java.nio.ByteBuffer实现来实现这个转换,因为只要将byte[]转换为ByteBuffer就可以实现所有primitive类型的数据读取。 参考代码如下: public class TestMain { //分配缓冲区,单位为字节,long类型占8...

    看了些博客,基本有3种方法可以实现这需求,不过只要效率不是相差太大,会使用一种就够了,条条大路通罗马。这里选择借助java.nio.ByteBuffer来实现这个转换,因为只要将byte[]转换为ByteBuffer就可以实现所有primitive类型的数据读取。

    参考代码如下:

    public class TestMain {
        //分配缓冲区,单位为字节,long类型占8字节,所以设置为8
        private static ByteBuffer buffer = ByteBuffer.allocate(8);
    
        //long类型转byte[]
        public static byte[] longToBytes(long x) {
            buffer.putLong(0, x);
            return buffer.array();
        }
    
        //byte[]转long类型
        public static long bytesToLong(byte[] bytes) {
            buffer.put(bytes, 0, bytes.length);
            //flip方法将Buffer从写模式切换到读模式,调用flip()方法会将position设回0,从头读起
            buffer.flip();
            return buffer.getLong();
        }
    
        //测试代码
        public static void main(String[] args) throws Exception {
            long test = 100;
            byte[] bytes = TestMain.longToBytes(test);//输出结果:[B@67117f44
            System.out.println(bytes);
            long test2 = TestMain.bytesToLong(bytes);
            System.out.println(test2);//输出结果:100
        }
    }
    
    展开全文
  • int和byte互转 long和byte互转

    千次阅读 2013-05-19 15:40:21
    转自:http://lionbule.iteye.com/blog/936600 1. int转byte   ...public static byte[] int2bytes(int i) {  ... byte[] b = new byte[4];     b[0] = (byte) (0xff&i

    转自:http://lionbule.iteye.com/blog/936600

    1. int转byte

     

     

    Java代码   收藏代码
    1. public static byte[] int2bytes(int i) {  
    2.         byte[] b = new byte[4];  
    3.   
    4.         b[0] = (byte) (0xff&i);  
    5.         b[1] = (byte) ((0xff00&i) >> 8);  
    6.         b[2] = (byte) ((0xff0000&i) >> 16);  
    7.         b[3] = (byte) ((0xff000000&i) >> 24);  
    8.         return b;  
    9. }  
     


     

    2. byte转int

     

     

    Java代码   收藏代码
    1. public static int bytes2int(byte[] bytes) {  
    2.         int num = bytes[0] & 0xFF;  
    3.         num |= ((bytes[1] << 8) & 0xFF00);  
    4.         num |= ((bytes[2] << 16) & 0xFF0000);  
    5.         num |= ((bytes[3] << 24) & 0xFF000000);  
    6.         return num;  
    7. }  
     

     

    3. byte转long

     

     

    Java代码   收藏代码
    1. public static long bytes2long(byte[] b) {  
    2.     long temp = 0;  
    3.     long res = 0;  
    4.     for (int i=0;i<8;i++) {  
    5.         res <<= 8;  
    6.         temp = b[i] & 0xff;  
    7.         res |= temp;  
    8.     }  
    9.     return res;  
    10. }  
     

     

    4. long 转byte

     

     

    Java代码   收藏代码
    1. public static byte[] long2bytes(long num) {  
    2.     byte[] b = new byte[8];  
    3.     for (int i=0;i<8;i++) {  
    4.         b[i] = (byte)(num>>>(56-(i*8)));  
    5.     }  
    6.     return b;  
    7. }  

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    big endian是指低地址存放最高有效字节(MSB),而little endian则是低地址存放最低有效字节(LSB)。 
    Big Endian 

       低地址                                             高地址 
       -----------------------------------------> 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
       |      12      |       34     |      56       |      78     | 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 

    Little Endian 

       低地址                                             高地址 
       -----------------------------------------> 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
       |      78      |       56     |      34       |      12     | 
       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 


    展开全文
  • switch(ss) ss只能是整数表达式枚举类型。  由于byte,short,char ,可以隐式的转化为int型,所以它们及它们的包装类都可以当做 switch判断,JDK1.7引入新特性后,String也可以被switch作用 由于long不能隐式的...

    switch(ss)     ss只能是整数表达式和枚举类型。

      由于byte,short,char ,可以隐式的转化为int型,所以它们及它们的包装类都可以当做

    switch判断,JDK1.7引入新特性后,String也可以被switch作用

    由于long不能隐式的转化为int型    所以long  不能被switch作用

    展开全文
  • java byte数组转long

    千次阅读 2019-08-07 15:00:43
    java byte数组转long型 转载地址 java下没有无符号的整形(unsigned char,unsigned short,unsigned int,unsigned long), 字节流通信时往往需要把byte[]转成对应的整形,符号位处理不当会导致数据解析失败. 不同整形...

    java byte数组转long型

    转载地址
    java下没有无符号的整形(unsigned char,unsigned short,unsigned int,unsigned long), 字节流通信时往往需要把byte[]转成对应的整形,符号位处理不当会导致数据解析失败.
    不同整形对应的字节长度不一, 可以统一为long来处理.
    byte占一个字节,如果不做处理直接付给int或long类型的变量,当高位为1时会导致得到不正确的值(负数), 如果与0xff(或者0xffL)做位与就可以保证得到byte本身的值.

    public class Main {
        public static void main(String[] args) {
            byte[] bs1 = new byte[1];
            bs1[0] = (byte) 0xf2;
            
            byte[] bs2 = new byte[2];
            bs2[0] = (byte) 0xa2;
            bs2[1] = 0x32;
            
            byte[] bs3 = new byte[4];
            bs3[0] = (byte) 0xe2;
            bs3[1] = 0x12;
            bs3[2] = 0x22;
            bs3[3] = 0x52;
            
            byte[] bs4 = new byte[8];
            bs4[0] = (byte) 0x82;
            bs4[1] = 0x12;
            bs4[2] = 0x22;
            bs4[3] = 0x32;
            bs4[4] = 0x42;
            bs4[5] = 0x52;
            bs4[6] = 0x62;
            bs4[7] = 0x72;
    
            try {
                System.out.printf("value1: %016x\n", bytes2long(bs1));
                System.out.printf("value2: %016x\n", bytes2long(bs2));
                System.out.printf("value3: %016x\n", bytes2long(bs3));
                System.out.printf("value4: %016x\n", bytes2long(bs4));
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        /* (non-Java-doc)
         * @see java.lang.Object#Object()
         */
        public Main() {
            super();
        }
        
        static long bytes2long(byte[] bs)  throws Exception {
            int bytes = bs.length;
            if(bytes > 1) {
            if((bytes % 2) != 0 || bytes > 8) {
                throw new Exception("not support");
            }}
            switch(bytes) {
            case 0:
                return 0;
            case 1:
                return (long)((bs[0] & 0xff));
            case 2:
                return (long)((bs[0] & 0xff) <<8 | (bs[1] & 0xff));
            case 4:
                return (long)((bs[0] & 0xffL) <<24 | (bs[1] & 0xffL) << 16 | (bs[2] & 0xffL) <<8 | (bs[3] & 0xffL));
            case 8:
                return (long)((bs[0] & 0xffL) <<56 | (bs[1] & 0xffL) << 48 | (bs[2] & 0xffL) <<40 | (bs[3] & 0xffL)<<32 | 
                        (bs[4] & 0xffL) <<24 | (bs[5] & 0xffL) << 16 | (bs[6] & 0xffL) <<8 | (bs[7] & 0xffL));
            default:
                throw new Exception("not support");     
            }
            //return 0;
        }
    
    }
    
    展开全文
  • switch能否作用在bytelong、String

    千次阅读 2016-08-03 08:46:55
    switch 内容为整数和枚举常量,既int和integer,byte,short,char可以默认转换为整形,而string和龙不可以,所以long和string不行而byte可以作用在switch上
  • byte数组和long,int,short互相转换

    千次阅读 2017-09-20 10:15:29
    /** * 测试2个线程同时进行,并打印结果 * xutengteng * 2016-12-27 */ public class Test { ... public static long byteToLong(byte[] b) { long s = 0; long s0 = b[0] & 0xff;// 最低位
  • 分别给大家介绍了Java中byte和int之间的转换、Java中 byte数组int之间的转换、Java中byte数组和long之间的转换以及整理了整体工具类的源码,需要的朋友可以参考借鉴,下面来一起看看吧。
  • Java 中 byte int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符处理;...
  • switch能否作用在bytelong、String上?

    千次阅读 2013-07-17 16:14:22
    switch(表达式),表达式的内容为整数表达式或枚举常量,整数表达式即为int或integer型,因为byte、short、char都可以转换成整型,而String、long不可以,所以switch能作用在byte上而不能作用在long和String上
  • public static byte[] longToByte(long number){ long temp = number; byte[] b =new byte[8]; for(int i =0; i ; i++) { b[i]=new Long(temp &0x
  • switch可作用于char byte short int ... switch不可作用于long double float boolean,包括他们的包装类 switch中可以是字符串类型,String(JDK1.7之后才可以作用在string上) switch中可以是枚举类型(JDK1....
  • 下面小编就为大家带来一篇java byte数组与int,long,short,byte的转换实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • Java byte[] long 转换

    万次阅读 2011-08-02 17:10:56
    public static void long2Byte(byte[] bb, long x) {   bb[ 0] = (byte) (x >> 56);   bb[ 1] = (byte) (x >> 48);   bb[ 2]
  • Java的byte数组Integer、Long互转

    万次阅读 2018-07-12 22:50:11
    byte[] -&gt; int int result = ByteBuffer.wrap(bytes).getInt(); 或者: public static byte[] intToBytes(int i) { byte[] targets = new byte[4]; targets[3] = (byte) (i &amp; 0x...
  • 题目 长整数问题, 参数类java.math.BigInteger,实现一个新的长整数类,要求类中的成员域只有byte[]mb_data;要求实现的成员方法是两个长整数类的加减乘除以及长...package bytelong; public class J_long { by...
  • byte,short,int和long有符号整数

    千次阅读 2014-05-08 21:53:18
    1)byte,short,int,long都是有符号整数,与有符号整数对应的
  • long、int转为byte[]

    2020-10-22 16:51:49
    很多数据类型的基本数据结构都是byte[],...现在要解决的问题是给length位byte赋值为0,我们可以拆分一个函数,就是把long写入byte[]中,代码如下,该函数每被调用一次,就解决了8个长度的赋值问题,这个函数不光可以解
  • 续:几个典型问题的求解 的第一个问题。直接贴代码:public class ExchangeIntToByte { static byte[] bArray; public static void intToByte(int a){ bArray = new byte[4]; for(int i=0; i; i++){
  • Java Byte数组与Long的相互转化

    千次阅读 2020-04-17 10:03:15
    NIO与原来的IO有同样的作用目的,但是使用的方式完全不同, NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行文件的读写操作。 而缓冲区Buffer是一个容器对象,底层的存储结构为一个数组。在...
  • Byte Short Int Long的长度

    千次阅读 2017-09-13 10:02:39
    一个字节长度是8位,即可以理解为下标为(0-7),只作参考。2个字节(0-15),4个字节(0-31) Byte 1字节 -2^7 ~ (2^7)-1 Short 2字节 -2^15 ~ (2^15)-1 Int 4字节 -2^31 ~ (2^31)-1 Long 8字节 -2^63 ~ (2^63)-1
  • longlongbyte数组互转

    千次阅读 2019-03-01 17:28:57
    最近做通讯,自己写报文协议,收发4字节16进制数。将十进制与16进制转化,还区分有无符号,自己写的程序70多行,发现这位大神写的极为简单,...最近做一个项目 要传udp包 包里包含很多信息 就是把一些信息用byte表示...
  • switch(表达式),表达式的内容为整数表达式或枚举常量,整数表达式即为int或integer型,因为byte、short、char都可以转换成整型,而String、long不可以,所以switch能作用在byte上而不能作用在long和String上 ...
  • 做项目时候根据协议在发送网络流的时候需要将所有int及long转换成byte,因此写了以下的转换方法,希望能帮助到需要的朋友 ^_^ 闲话少说,直接上码。 public class Utilities { public static b

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 456,490
精华内容 182,596
关键字:

byte和long