byte_byte by - CSDN
byte 订阅
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。 展开全文
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。
信息
中文名
字节
学    科
计算机
简    写
B
外文名
Byte
定    义
相当于一个字符,8位=1字节
类    型
数字信息的单位
字节简介
字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节也可以表示一系列二进制位。在一些计算机系统中,4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。一些处理器能够处理双字节或单字节指令。字节通常简写为“B”,而位通常简写为小写“b”,计算机存储器的大小通常用字节来表示 [2]  。
收起全文
  • char与byte的区别

    2018-07-07 16:40:01
    很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:  byte 是字节数据类型...

    很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:


            byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是065535 ;char是一个16位二进制的Unicode字符,JAVAchar来表示一个字符 。


            下面用实例来比较一下二者的区别:

    1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:

    char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
    System.out.println(c);
    byte d1 = 1;
    byte d2 = -1;
    byte d3 = 127; // 如果是byte d3 = 128;会报错
    byte d4 = -128; // 如果是byte d4 = -129;会报错
    System.out.println(d1);
    System.out.println(d2);
    System.out.println(d3);
    System.out.println(d4);

    结果为:

    ?
    1
    -1
    127
    -128


    2、char可以表中文字符,byte不可以,如:

    char e1 = '中', e2 = '国';
    byte f= (byte) '中';	//必须强制转换否则报错
    System.out.println(e1);
    System.out.println(e2);
    System.out.println(f);

    结果为:



    45


    3、char、byteint对于英文字符,可以相互转化,如:

    byte g = 'b';	//b对应ASCII是98
    char h = (char) g;
    char i = 85;	//U对应ASCII是85
    int j = 'h';	//h对应ASCII是104
    System.out.println(g);
    System.out.println(h);
    System.out.println(i);
    System.out.println(j);
    结果为:
    98
    b
    U
    104



    欢迎加入"Java梦之队" 学习群:226159645




    关注【SunLogging】 
    这里写图片描述 
    长按或扫码二维码,在手机端阅读更多内容


    展开全文
  • byte

    2018-04-04 00:13:21
    (BYTE *)0 表示把整数0强制转换为BYTE型数值的地址Java的二进制采用补码形式,byte范围是[-128, 127],而Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位...

    0本来表示一个整数。在C语言中,内存地址也是用整数int表示(32bit)。因此,
    (BYTE *)0 表示把整数0强制转换为BYTE型数值的地址

    Java的二进制采用补码形式,byte范围是[-128, 127],而Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,

    举例来说,一个byte类型的-1(即0xff),会被转换成int 类型的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

    -1 hex  : 0xffffffff
    -1&0xff : 0xff
    
    -1 bin  : 11111111111111111111111111111111
    -1&0xff bin: 11111111
    
    127 bin    : 1111111
    -128 bin   : 11111111111111111111111110000000

     

    三。将十六进制字符串存为字节数组,可以节省存储空间

    0499AFA3432E9F2EBD81C134C1F5E4B3(MD5串)

    如果把这个MD5串直接存为字符串,就是32个字节(byte),就是256二进制位。

    如果把MD5串的每个字符用16进制字符来表示,那么用二进制位就会表示成4个二进制位,总共是128位,也就是16个字节。那么节省了一半的存储空间。

     

    四。在定义int类型的变量时,使用十六进制表示有什么好处?

    int a = 0b11000011001111001100011100101000

    还是这样好?

    1100 0011 0011 1100 1100 0111 0010 1000
    int a = 0xC33CC728


     机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.

    1-1 = 1 + (-1) = 0 

    于是人们开始探索将符号位参与运算, 并且只保留加法的方法. 首先来看原码:

    一、原码

    计算十进制的表达式: 1-1=0

    1 - 1 = 1 + (-1) = [00000001] + [10000001] = [10000010] = -2

    如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.

     

    二、反码

    为了解决原码做减法的问题, 出现了反码:

    正数的反码是其本身

    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

    计算十进制的表达式: 1-1=0

    1 - 1 = 1 + (-1) = [0000 0001] + [1000 0001]= [0000 0001] + [1111 1110] = [1111 1111] = [1000 0000] = -0

    发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的,

    但是0带符号是没有任何意义的. 而且会有[0000 0000]和[1000 0000]两个编码表示0.

     

    三、补码

    正数的补码就是其本身

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    于是补码的出现, 解决了0的符号以及两个编码的问题:

    1-1 = 1 + (-1) = [0000 0001] + [1000 0001] = [0000 0001] + [1111 1111] = [0000 0000]=[0000 0000]

    这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.  而且可以用[1000 0000]表示-128:

    (-1) + (-127) = [1000 0001] + [1111 1111] = [1111 1111] + [1000 0001] = [1000 0000]

    -1-127 = -128,  就是[1000 0000]  但是注意因为实际上是使用以前的-0的补码来表示-128,

    所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000], 这是不正确的)

    使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数。

    这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

     

     四、同余

    7 ≡ 7 (mod 12)

    (-2) ≡ 10 (mod 12)

    7 -2 ≡ 7 + 10 (mod 12)

    所谓十六进制String,就是字符串里面的字符都是十六进制形式,因为一个byte是八位,可以用两个十六进制位来表示,因此,byte数组中的每个元素可以转换为两个十六进制形式的char,所以最终的HexString的长度是byte数组长度的两倍.

    Byte(字节型)10 - 255


    Byte数据类型(字节型)用一个字节(Byte)储存,可区别256个数字,取值范围:0到255。 Byte是从0-255的无符号类型,所以不能表示负数。具体参照数据类型

    效果等同于 unsigned char型
    typedef unsigned char BYTE
    定义一种新类型BYTE,它其实就是unsigned char
    在VC++中,byte型数据的定义包含在windows.h头文件中,调用byte需要添加代码#include <windows.h>
    而在java中,byte是一个关键字
    表示声明了一个整形常量在内容中占用一个字节
    取值范围是-128~127


    字符串
    内存中,如果“字符”是以ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为ANSI字符串或者多字节字符串。如,"中文123" (占8字节,包括一个隐藏的\0)。
    字符集
    对于ANSI编码方式,存在不同的字符集(Charset)。同样的字节序列,在不同的字符集下表示的字符不一样。要正确解析一个ANSI字符串,还要选择正确的字符集,否则就可能导致所谓的乱码现象。不同语言版本的操作系统,都有一个默认的字符集。在不指定字符集的情况下,系统会使用此字符集来解析ANSI字符串。也就是说,如果我们在简体中文版的Windows下打开了一个由日文操作系统保存的ANSI文本文件(仅包含ANSI字符串的文本文件),我们看到的将是乱码。但是,如果我们使用Visual Studio之类的带编码选择的文本编辑器打开此文件,并且选择正确的字符集,我们将可以看到它的原貌。注意:简体中文字符集中的繁体字和繁体中文字符集中的繁体字,编码不一定相同(事实证明,似乎是完全不同)。
    每个字符集都有一个唯一的编号,称为代码页(Code Page)。简体中文(GB2312)的代码页为936,而系统默认字符集的代码页为0,它表示根据系统的语言设置来选择一个合适的字符集。
    Unicode
    字符串在内存中,如果“字符”是以在Unicode中的序号存在的,那么我们称这种字符串为Unicode字符串或者宽字节字符串。在Unicode中,每个字符都占两个字节。如,"中文123"(占10字节)。
    Unicode和ANSI的区别就相当于输入法内的“全角”和“半角”的区别。
    由于不同ANSI编码所规定的标准是不相同的(字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于Unicode字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。



    展开全文
  • Bytebyte区别详解

    2019-02-24 10:29:23
    写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍 1:byteByte详解 byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127。 Byte是java....

    写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍


    1:byte和Byte详解

    byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127。

    Byte是java.lang中的一个类,目的是为基本数据类型byte进行封装

    2:二者关系:

    Byte是byte的包装类,就如同Integer和int的关系,

    一般情况包装类用于泛型或提供静态方法,用于基本类型或字符串之间转换,建议尽量不要用包装类和基本类型之间运算,因为这样运算效率会很差的

    3:封装的好处

    封装有几种好处,比如:
    3.1. Byte可以将对象的引用传递,使得多个function共同操作一个byte类型的数据,而byte基本数据类型是赋值之后要在stack(栈区域)进行存储的;
    3.2. 在java中包装类,比较多的用途是用在于各种数据类型的转化中。
    比如,现在byte要转为String
    byte a=0;
    String result=Integer.toString(a);
    3.3使用泛型时

     List<Integer> nums;
    

    这里<>需要类。如果你用int。它会报错的

    展开全文
  • 什么是字节(Byte

    2018-11-28 17:56:08
    字节(Byte)是存储数据的基本单位,并且是硬件所能访问的最小单位。前面说过,CPU 只能直接处理内存数据,不能直接处理硬盘数据。硬盘数据必须先调入内存条中才可以运行。内存中存储数据的最小单位是“位(Bit)”...

    原文出处:http://c.biancheng.net/view/140.html

    字节(Byte)是存储数据的基本单位,并且是硬件所能访问的最小单位。前面说过,CPU 只能直接处理内存数据,不能直接处理硬盘数据。硬盘数据必须先调入内存条中才可以运行。内存中存储数据的最小单位是“位(Bit)”。字节是存储数据的基本单位,位是存储数据的最小单位,不要混淆了。

    内存里面存放的全是二进制代码。内存里面有很多“小格子”,每个“格子”中只能存放一个 0 或 1。一个“小格子”就是一位,所以“位”要么是 0,要么是 1,不可能有比位更小的单位。那么字节和位是什么关系呢?8 个“小格子”就是一字节,即一字节等于 8 位。

    那么为什么硬件所能访问的最小单位是字节,而不是位呢?因为硬件是通过地址总线访问内存的,而地址是以字节为单位进行分配的,所以地址总线只能精确到字节。那如何控制到它的某一位呢?这个只能通过“位运算符”,即通过软件的方式来控制。

    字节换算

    常见的存储单位主要有bit(位)、B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)。它们之间主要有如下换算关系:

    1B=8bit
    1KB=1024B
    1MB=1024KB
    1GB=1024MB

    其中 B 是 Byte 的缩写。

    比如计算机的内存是 4GB,那么它能存放多少个 0 或 1(即能存放多少位)呢?4×1024×1024×1024×8 位。因为一个 1024 就是 210,所以结果就相当于 32 个 230 这么多!这就是 4GB 内存条所能存储的数据。

    硬盘也一样,比如计算机的硬盘是 500GB,那么它能存储的数据为 500×1024×1024×1024×8 位,也就是能存放 4000 个 230 这么多的 0 或 1。

    最后讲一个小常识。比如你买了一个 500GB 的硬盘,但是真正显示出来的肯定没有 500GB。那么这是为什么呢?因为计量单位不一样!在买硬盘或 U 盘的时候,卖家所说的,包括包装盒上写的都是以 1000 为单位的,而计算机是以 1024 为单位的。

    展开全文
  • 字节(byte)简介

    2019-06-27 21:58:55
    在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。 下图展示了每个存储...

    在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。

     

    下图展示了每个存储单位所包含的位的个数:

    字节(byte)简介

    下表列出了所有无符号整数可能的取值范围。

    类型 取值范围 按位计的存储大小 类型 取值范围 按位计的存储大小
    无符号字节 0 到 28-1 8 无符号四字 0 到 264-1 64
    无符号字  0 到 216-1 16 无符号八字 0 到 2128-1 128
    无符号双字  0 到 232-1 32      

    大的度量单位对内存和磁盘空间而言,还可以使用大的度量单位:

    • 1 千字节(kilobyte)等于 210,或 1024 个字节。
    • 1 兆字节(megabyte)(1MB)等于 220,或 1 048 576 字节。
    • 1 吉字节(gigabyte)(1GB)等于 230 即 10243,或 1 073 741 824 字节。
    • 1 太字节(terabyte)(1TB)等于 240,即 10244,或 1 099 511 627 776 字节。
    • 1 拍字节(petabyte)等于 250,或 1 125 899 906 842 624 字节。
    • 1 艾字节(exabyte)等于 260,或 1 152 921 504 606 846 976 字节。
    • 1 泽字节(zettabyte)等于 270 个字节。
    • 1 尧字节(yottabyte)等于 280 个字节。
    • 推荐学习目录: 字节(byte)
    展开全文
  • byte要转化为int的时候,高的24位必然会补1,这样,其二进制补码其实已经不一致了,&0xff可以将高的24位置为0,低8位保持原样。这样做的目的就是为了保证二进制数据的一致性。
  • 最近在写有关SHA256加密解密的问题,发现...private static String byte2Hex(byte[] bytes){ StringBuffer stringBuffer = new StringBuffer(); String temp = null; for (int i=0;i&lt;bytes.length;i++)...
  • byte 为什么要 & 0xff?

    2017-06-15 15:25:30
    在MD5运算中 通常会把MD5(十六进制的byte[])转成HexString, 会用到一个方法 private static String bytesToHex1(byte[] md5Array) { StringBuilder strBuilder = new StringBuilder(); for (int i = 0; i ...
  • 转载:byte[i] & 0xFF原因 无意间发现了一段难以理解的代码 byte[] bs = digest.digest(origin.getBytes(Charset.forName(charsetName))) ; for (int i = 0; i < bs.length; i...
  • 转自:... 无意间翻看之间的代码,发现了一段难以理解的代码。 byte[] bs = digest.digest(origin.getBytes(Charset.forName(charsetName))) ; for (int i = 0...
  • 字节 byte 位 bit,来自英文bit,音译为“比特”,表示二进制位。 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 一个字的字长为16 一个字节的字长是8 bps 是 bits per second 的简称。...
  • byte[]读取与写入

    2018-09-18 14:32:13
    FileStream fs1 = new FileStream(@"E:\tenp\doc\111.txt", FileMode.Open, FileAccess.Read, FileShare.Read); FileStream fs2 = new FileStream(@"E:\temp\doc\222.txt", FileMode.Create, ...
  • //string 转 byte[] String str = "Hello"; byte[] srtbyte = str.getBytes(); // byte[] 转 string String res = new String(srtbyte); System.out.println(res); <br /> ...
  • Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符...
  • byte[]是字节数组类型,和int[]类似,只是一个是字节型的,一个是整型的; char是UNICOEDE字符,为16位的整数; String是个类,一般用来表示字符串的; hello.getBytes()意思就是把hello这个字符串转化为字节流(byte...
  • 一个字节(byte)=8位(bit),“byte数组”里面全部是“byte”,即每一个byte都可以用二进制、十六进制、十进制来表示。 首先八位二进制数0000 0000 ~1111 1111,一共可以表示2^8=256位数, 如果想要表示无符号...
  • int 转换成byte 数字

    2011-02-22 00:56:00
    int转换为byte溢出怎么计算结果?如 int a=135 转换为 byte 要汉字描述byte是1个字节 所以(字节型,占1 字节,表示8 位正整数,范围0 ~ 255) int是4个字节 而把int转换成byte会截取最后一个字节 比如你说的...
  • 0x00 问题引出: 最近在做一个买房自动化分析Python脚本,需要爬取网页。 在使用urllib获取reqest的response的时候,还要进行编码转换。...UnicodeDecodeError: 'utf-8' codec can't decode byte 0x
  • string转化为byte[]数组String str = "abcd"; byte[] bs = str.getBytes();byte[]数组转化为string字符串/*String str1 = "abcd"; byte[] bs1 = str1.getBytes();*/ byte[] bs1 = {97,98,100}; ...
  • 一、十六进制(Hex)与字节(byte)的概念 十六进制(Hex):计算机中数据的一种表示方法,它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15。 字节(byte): java...
1 2 3 4 5 ... 20
收藏数 1,123,455
精华内容 449,382
关键字:

byte