精华内容
下载资源
问答
  • byte转换

    2010-01-13 15:28:54
    byte的取值范围是-128 ~ 127   8个位的第一个位是符号位:   0000 0001 为 1 1111 1111 为 -1 最大正数为0111 1111 为127 最大负数为1000 0000 为-128   进行隐式转换byte i = 128 这样是错误的,...

    byte的取值范围是-128 ~ 127

     

    8个位的第一个位是符号位:

     

    0000 0001 为 1

    1111 1111 为 -1

    最大正数为0111 1111 为127

    最大负数为1000 0000 为-128

     

    进行隐式转换时

    byte i = 128

    这样是错误的,因为超出了byte的取值范围.

     

    所以我们要做强制类型转换:

     

    byte i = (byte) 128 值为-128

    byte i = (byte) 255 值为-1


    原因就是当(byte)128的时候,其实是先把128转换为int再转换为byte所以变成-128了

    好像是用负数的补码 是他的十进制表示形式,正数的补码还是它本身
    补码计算规则是 个位取反加1


    展开全文
  • byte转换字符串(string)+字符串转换byte C# 中字符串string和字节数组byte[]的转换 //string转byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str ); //byte[]转string:...

    byte转换字符串(string)+字符串转换byte

    C# 中字符串string和字节数组byte[]的转换

    //string转byte[]:
    byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str );
    
    //byte[]转string:
    string str = System.Text.Encoding.Default.GetString ( byteArray );
    
    //string转ASCII byte[]:
    byte[] byteArray = System.Text.Encoding.ASCII.GetBytes ( str );
    
    //ASCII byte[]转string:
    string str = System.Text.Encoding.ASCII.GetString ( byteArray );

    Java中字符串string和字节数组byte[]的转换

    //string 转 byte[]
    
    String str = "Hello";
    
    byte[] srtbyte = str.getBytes();
    
    // byte[] 转 string
    
    String res = new String(srtbyte);
    
    System.out.println(res);
    
    
    //当然还有可以设定编码方式
    的
    
    String str = "hello";
    
    byte[] srtbyte = null;
    
    try {
    
        srtbyte = str.getBytes("UTF-8");
    
        String res = new String(srtbyte,"UTF-8");
    
        System.out.println(res);
    
        } catch (UnsupportedEncodingException e) {
    
        // TODO Auto-generated catch block
    
        e.printStackTrace();
    
        }

     

    posted @ 2018-12-25 11:40 韦邦杠 阅读(...) 评论(...) 编辑 收藏
    展开全文
  • Android kotlin byte转换工具代码完事 代码 import java.lang.StringBuilder /** * byte 转换工具 * * @author D10NG * @date on 2019-11-23 16:52 */ object ByteUtils { /** * 检验校验和 ...

    Android kotlin byte转换工具 和 获取时间工具

    代码

    byte转换工具

    
    import kotlin.experimental.and
    import kotlin.experimental.or
    import kotlin.experimental.xor
    import kotlin.text.StringBuilder
    
    /**
     * byte 转换工具
     *
     * @author D10NG
     * @date on 2019-11-23 16:52
     */
    
    /**
     * 校验和计算类型
     *
     * Author: D10NG
     * Time: 2020/12/5 2:41 下午
     */
    enum class EndNumType {
        AND,
        OR,
        XOR
    }
    
    /**
     * 检验校验和
     * @receiver ByteArray
     * @param type EndNumType
     * @return Boolean true:检验成功; false:检验失败;
     */
    fun ByteArray.checkEndNum(type: EndNumType = EndNumType.XOR) : Boolean {
        if (this.isEmpty()) return false
        var num = (0).toByte()
        for (i in 0 until this.size -1) {
            num = when(type) {
                EndNumType.AND -> {
                    (num and this[i])
                }
                EndNumType.OR -> {
                    (num or this[i])
                }
                EndNumType.XOR -> {
                    (num xor this[i])
                }
            }
        }
        return num == this[this.size -1]
    }
    
    /**
     * 获取校验和
     * @param type EndNumType
     * @return [Byte] 校验和
     */
    fun ByteArray.getChecksum(type: EndNumType = EndNumType.XOR) : Byte {
        var num = (0).toByte()
        for (element in this) {
            num = when(type) {
                EndNumType.AND -> {
                    (num and element)
                }
                EndNumType.OR -> {
                    (num or element)
                }
                EndNumType.XOR -> {
                    (num xor element)
                }
            }
        }
        return num
    }
    
    /**
     * 添加较验和
     * @param type EndNumType
     * @return [ByteArray] 增加较验和后的Byte数组
     */
    fun ByteArray.addChecksum(type: EndNumType = EndNumType.XOR): ByteArray {
        val list = this.toMutableList()
        list.add(this.getChecksum(type))
        return list.toByteArray()
    }
    
    /**
     * 将 byte 转为 8位二进制字符串 "00110011"
     * @return [String] 8位二进制字符串
     */
    fun Byte.toBinStr() : String {
        val str = Integer.toBinaryString(this.toInt())
        return str.upToNStr(8)
    }
    
    /**
     * 将 boolean 数组 转换为 byte
     * @param bools
     * @return [Byte]
     */
    fun getByteFromBool(vararg bools: Boolean) : Byte {
        val builder = StringBuilder()
        for (b in bools.iterator()) {
            builder.append(if (b) "1" else "0")
        }
        return builder.toString().binToByte()
    }
    
    /**
     * 将 boolean 数组 转换为 byte
     * @return [Byte]
     */
    fun List<Boolean>.toByte() : Byte {
        val builder = StringBuilder()
        for (b in this.iterator()) {
            builder.append(if (b) "1" else "0")
        }
        return builder.toString().binToByte()
    }
    
    /**
     * 将二进制字符串 "00110011" 转为 byte
     * @return [Byte]
     */
    fun String.binToByte() : Byte {
        val value = Integer.valueOf(this, 2)
        return value.toByte()
    }
    
    /**
     * 从16进制字符串中获取Byte数组
     * @return [ByteArray]
     */
    fun String.hexToByteArray(): ByteArray {
        if (this.isEmpty()) return byteArrayOf()
        val list = mutableListOf<Byte>()
        var str = this.copy()
        while (str.isNotEmpty()) {
            if (str.length < 2) {
                str = str.upToNStrInBack(2)
            }
            list.add(str.substring(0, 2).toInt(16).toByte())
            str = if (str.length > 2) str.substring(2) else ""
        }
        return list.toByteArray()
    }
    
    /**
     * 将Byte数组转为16进制字符串
     * @return [String]
     */
    fun ByteArray.byteArrayToHexStr(): String {
        val builder = StringBuilder()
        for (b in this) {
            builder.append((b.toInt() and 0xFF).toString(16).upToNStr(2))
        }
        return builder.toString()
    }
    
    /**
     * 将整型转换成Byte数组
     * @receiver Int
     * @param size Int
     * @return ByteArray
     */
    fun Long.toByteArray(size: Int): ByteArray {
        var str = this.toString(16)
        if (str.length % 2 > 0) str = "0$str"
        val byteArray = str.hexToByteArray()
        val byteList = mutableListOf<Byte>()
        when {
            byteArray.size < size -> {
                for (i in byteArray.size until size) {
                    byteList.add(0.toByte())
                }
                byteList.addAll(byteArray.toMutableList())
            }
            else -> {
                byteList.addAll(byteArray.toMutableList().subList(0, size))
            }
        }
        return byteList.toByteArray()
    }
    
    /**
     * 将两个字节的byte数组转换成有符号整型
     * @param byte1 高位
     * @param byte2 低位
     */
    fun convertSignInt(byte1: Byte, byte2: Byte): Int =
        (byte1.toInt() shl 8) or (byte2.toInt() and 0xFF)
    
    /**
     * 将两个字节的byte数组转换成无符号整型
     * @param byte1 高位
     * @param byte2 低位
     */
    fun convertUnSignInt(byte1: Byte, byte2: Byte): Int =
        (byte1.toInt() and 0xFF) shl 8 or (byte2.toInt() and 0xFF)
    
    /**
     * 获取整型数据的 高位 byte
     * @param value 整型数据
     */
    fun convertUnSignByteHeight(value: Int): Byte =
        value.ushr(8).toByte()
    
    /**
     * 获取整型数据的 低位 byte
     * @param value 整型数据
     */
    fun convertUnSignByteLow(value: Int): Byte =
        (value and 0xff).toByte()
    

    时间工具

    参考链接:https://blog.csdn.net/sinat_38184748/article/details/88899653

    完事

    展开全文
  • Java byte转换成16进制int

    千次阅读 2017-11-06 21:28:07
    Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16...

    Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。

    同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

    根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。

     

     

        /**

     

    Java代码  
    1.  * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。   
    2.  * @param src byte[] data   
    3.  * @return hex string   
    4.  */      
    5. public static String bytesToHexString(byte[] src){   
    6.     StringBuilder stringBuilder = new StringBuilder("");   
    7.     if (src == null || src.length <= 0) {   
    8.         return null;   
    9.     }   
    10.     for (int i = 0; i < src.length; i++) {   
    11.         int v = src[i] & 0xFF;   
    12.         String hv = Integer.toHexString(v);   
    13.         if (hv.length() < 2) {   
    14.             stringBuilder.append(0);   
    15.         }   
    16.         stringBuilder.append(hv);   
    17.     }   
    18.     return stringBuilder.toString();   
    19. }   
    20. /**  
    21.  * Convert hex string to byte[]  
    22.  * @param hexString the hex string  
    23.  * @return byte[]  
    24.  */  
    25. public static byte[] hexStringToBytes(String hexString) {   
    26.     if (hexString == null || hexString.equals("")) {   
    27.         return null;   
    28.     }   
    29.     hexString = hexString.toUpperCase();   
    30.     int length = hexString.length() / 2;   
    31.     char[] hexChars = hexString.toCharArray();   
    32.     byte[] d = new byte[length];   
    33.     for (int i = 0; i < length; i++) {   
    34.         int pos = i * 2;   
    35.         d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));   
    36.     }   
    37.     return d;   
    38. }   
    39. /**  
    40.  * Convert char to byte  
    41.  * @param c char  
    42.  * @return byte  
    43.  */  
    44.  private byte charToByte(char c) {   
    45.     return (byte"0123456789ABCDEF".indexOf(c);   
    46. }  

     

     

    Java代码  
    1. //将指定byte数组以16进制的形式打印到控制台   
    2. public static void printHexString( byte[] b) {     
    3.    for (int i = 0; i < b.length; i++) {    
    4.      String hex = Integer.toHexString(b[i] & 0xFF);    
    5.      if (hex.length() == 1) {    
    6.        hex = '0' + hex;    
    7.      }    
    8.      System.out.print(hex.toUpperCase() );    
    9.    }    
    10.   
    11. }  

     

     

    java中byte转换int时为何与0xff进行与运算

    在剖析该问题前请看如下代码

     

    Java代码  
    1. public static String bytes2HexString(byte[] b) {   
    2.   String ret = "";   
    3.   for (int i = 0; i < b.length; i++) {   
    4.    String hex = Integer.toHexString(b[ i ] & 0xFF);   
    5.    if (hex.length() == 1) {   
    6.     hex = '0' + hex;   
    7.    }   
    8.    ret += hex.toUpperCase();   
    9.   }   
    10.   return ret;   
    11. }  

     

     
    上面是将byte[]转化十六进制的字符串,注意这里b[ i ] & 0xFF将一个byte和 0xFF进行了与运算,然后使用Integer.toHexString取得了十六进制字符串,可以看出
    b[ i ] & 0xFF运算后得出的仍然是个int,那么为何要和 0xFF进行与运算呢?直接 Integer.toHexString(b[ i ]);,将byte强转为int不行吗?答案是不行的.

    其原因在于:
    1.byte的大小为8bits而int的大小为32bits
    2.java的二进制采用的是补码形式

    在这里先温习下计算机基础理论

    byte是一个字节保存的,有8个位,即8个0、1。
    8位的第一个位是符号位, 
    也就是说0000 0001代表的是数字1 
    1000 0000代表的就是-1 
    所以正数最大位0111 1111,也就是数字127 
    负数最大为1111 1111,也就是数字-128

    上面说的是二进制原码,但是在java中采用的是补码的形式,下面介绍下什么是补码

    1、反码:
            一个数如果是正,则它的反码与原码相同;
            一个数如果是负,则符号位为1,其余各位是对原码取反;

    2、补码:利用溢出,我们可以将减法变成加法
           对于十进制数,从9得到5可用减法:
           9-4=5    因为4+6=10,我们可以将6作为4的补数
           改写为加法:
           9+6=15(去掉高位1,也就是减10)得到5.

           对于十六进制数,从c到5可用减法:
           c-7=5    因为7+9=16 将9作为7的补数
           改写为加法:
           c+9=15(去掉高位1,也就是减16)得到5.

        在计算机中,如果我们用1个字节表示一个数,一个字节有8位,超过8位就进1,在内存中情况为(100000000),进位1被丢弃。

        ⑴一个数为正,则它的原码、反码、补码相同
        ⑵一个数为负,刚符号位为1,其余各位是对原码取反,然后整个数加1
        
    - 1的原码为                10000001
    - 1的反码为                11111110
                                                       + 1
    - 1的补码为                11111111

    0的原码为                 00000000
    0的反码为                 11111111(正零和负零的反码相同)
                                              +1
    0的补码为               100000000(舍掉打头的1,正零和负零的补码相同)

    Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
    例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
    和0xff相与后,高24比特就会被清0了,结果就对了。

    ----
    Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

    而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。

    展开全文
  • String字符串转换为byte byte转换为String字符串 汉字乱码问题 //从buffer中读取字符串,获取字符串的编码方式定义为:"GB2312" String strCharContent = null; try { strCharContent = new String(buffer,6,...
  • C++中把BYTE转换为int

    2014-04-03 21:32:14
    BYTE转换为int也简单,直接用强制转换即可。 BYTE是一字节的,而int型是4字节,这是在转换中需要注意的。 如果只要把BYTE型的放在低位,则直接强制转换: BYTE byte=3; int a = (int)byte; //转换之后a = 3; ...
  • C# 中将byte转换为int和int转换为byte

    千次阅读 2020-06-11 17:20:31
    参考:https://blog.csdn.net/emeer/article/details/2060014 int s = 100; byte[] shi = System.BitConverter.GetBytes(s); int sh = System.BitConverter.ToInt32(shi,0); 提取第一个字节的数据直接byte[0]
  • 在C# 中将byte转换为int和int转换为byte

    万次阅读 2018-06-06 09:03:14
    在c#中简单的int和byte数组互相转换 int s = 100; byte[] shi = System.BitConverter.GetBytes(s); int sh = System.BitConverter.ToInt32(shi,0); https://blog.csdn.net/emeer/article/deta...
  • 在string和byte[]这两个类型中允许byte[]向string的直接转换,但是不允许string向byte[]的直接转换,写成代码大概是这样:当然我们也可以把string和byte[]用作另一种类型的初始化,这样可以做到两个类型...
  • public class DataTypeChangeHelper { ... * 将一个单字节的byte转换成32位的int * * @param b * byte * @return convert result */ public static int unsignedByteToInt(byte b) { retur
  • 本文总结了java中byte转换int时总是与0xff进行与运算的原因。 在剖析该问题前请看如下代码: public static String bytes2HexString(byte[] b) {  String ret = "";  for (int i = 0; i  String hex = ...
  • byte转换为char

    千次阅读 2016-03-25 16:21:27
    char转化为byte:  public static byte[] charToByte(char c) {   byte[] b = new byte[2];   b[0] = (byte) ((c & 0xFF00) >> 8);   b[1] = (byte) (c & 0xFF);   return b;
  • 以下函数入参为int型切片数组,函数...//Golang: 根据ascii码表将 []byte 转换为 string func BytesToString(b []byte) string { bh := (*reflect.SliceHeader)(unsafe.Pointer(&b)) sh := reflect.StringHeader{bh.D
  • C++将byte转换为string(16进制)

    万次阅读 2014-11-07 10:56:27
    实际上c++中byte就是unsigned char(无符号字符类型)。...然而,对于16进制来讲一般都是用unsigned char来进行表示,因此,我们需要把unsigned char所表示的16进制值用char类型来表示,从而实现将c++ byte 转换成16进
  • 2的24次Byte转换16MB

    千次阅读 2020-02-27 20:25:05
    单位: 字节—Byte/byte 位—bit ...转换过程: 224Byte=16777216Byte 16777216Byte/1024=16384KByte 16384KByte/1024=16MByte 此外,1Byte等于8位,也就是1Byte=8bit,那么16MByte=128Mbit。 ...
  • C#中string、byte转换

    2015-09-01 16:09:11
    C# string byte数组转换实现的过程是什么呢?C# string byte数组间的转换需要注意什么呢?C# string byte数组间转换所涉及的方法是什么呢?让我们来看看具体的内容: C# string byte数组转换之string类型转成byte...
  • JAVA String与byte转换

    千次阅读 2016-08-30 10:26:31
    1.byte转String数组
  • 网络流量单位bps与系统单位byte转换

    千次阅读 2010-03-13 21:45:00
    网络流量单位bps与系统单位byte转换 注意读书法网络流量单位bps与系统单位byte转换 何謂 bps ? bps 是 bits per second 的簡稱。一般資料機及網路通訊的傳輸速率都是以「bps」為單位。如14.4Kbps、28.8Kbps、56Kbps...
  • list数组中的某个参数,比如:一个证书,... //abc 5.byte转换为String的方法 byte b = (byte) 6; // 方法一 String s=Byte.toString(b); // 方法二 String s=b + ""; // 方法三 String s=new String(new byte[] {b});
  • C# ASCII和Byte转换

    千次阅读 2014-11-25 16:17:45
    1. 常规转换时数值的转换,如把Ascii为"46"转化为Byte,对应值还是0x46: byte b = System.Text.Encoding.Ascii.GetBytes("46")[0]; 2. 如何把Ascii值转化为Ascii表对应的16进制值? 如有byte...
  • delphi中String,PChar,PByte,Array of Char,Array of Byte 转换 vars:string; pc:pchar; pb:pbyte; ac:array[1..100] of char; ab:array[1..100] of byte; i:integer; begin  s:='...
  • JAVA中3种将byte转换为String的方法

    万次阅读 2011-10-31 11:26:07
    JAVA中3种将byte转换为String的方法 HttpClient 类库中GetMethod类的getResponseBody方法返回的是byte[]类型,要操作起来不方便,我想把它转化成String类型。 查了网上的资料,有说法认为用这种方法比较...
  • go语言字符集转换整数[]byte转换int

    千次阅读 2018-03-18 15:33:40
    int类型转换string类型: s := strconv.Itoa(i)int64类型转换string类型:s := strconv.FormatInt(i, 10)string类型转换int类型: i, err := strconv.Aoti(s)string类型转换int64类型:i, err := strconv.ParseInt(s...
  • unity将byte转换为Texture

    千次阅读 2019-08-13 12:21:03
     public static Texture2D ByteToTex2d(byte[] bytes, int w = 100, int h = 100)  {  Texture2D tex = new Texture2D(w, h);  tex.LoadImage(bytes);  return tex;  }  public static Texture2D ...
  • JAVA,将byte转换为String

    千次阅读 2018-10-31 10:05:54
    byte 转 String ByteBuffer byteBuffer = ByteBuffer.allocate(4*1024); byteBuffer.put("abcdefghijk".getBytes()); // System.out.println(Byte.toString(byteBuffer.get())); // System....
  • 原来以为直接可以将byte当作int使用。没想到不可以。需要将高低位分别取出来,然后计算出int值。 /** * 将一个byte数转成int * 实现这个函数的目的是为了将byte数当成无符号的变量去转化成int * * @param data ...
  • c# int byte转换

    万次阅读 2008-12-07 10:09:00
    在C#中,如何将一个int转换成一个byte array,又如何将一个byte array转换成一个int 至少可以通过三种方法来进行转换。在.NET Framework类库的System名字空间中有个叫做BitConverter的类,它是专门用来进行这种...
  • Android开发中遇到的字符串、十六进制和Byte转换,及十六进制校验等函数集
  • python str与byte转换 encode decode

    千次阅读 2018-04-30 12:23:14
    # str to byte key = "aaa" r = str.encode(key) print(type(r)) print(r) # byte to str key2 = b"aaa" r = key2.decode() print(type(r)) print(r) 输出: &lt;class 'bytes'&gt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 24,952
精华内容 9,980
关键字:

byte转换