byte_bytes - CSDN
byte 订阅
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。 展开全文
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。
信息
外文名
Byte
定    义
相当于一个字符,8位=1字节
类    型
数字信息的单位
中文名
字节
学    科
计算机
简    写
B
字节简介
字节是二进制数据的单位。一个字节通常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 有着统一的标准,它定义了世界上绝大多数的字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。



    展开全文
  • 什么是字节(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 为单位的。

    展开全文
  • 字节、字、bit、byte的关系

    万次阅读 多人点赞 2019-04-18 18:44:26
    字节 byte 位 bit,来自英文bit,音译为“比特”,表示二进制位。 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 一个字的字长为16 一个字节的字长是8 bps 是 bits per second 的简称。...

    字 word
    字节 byte
    位 bit,来自英文bit,音译为“比特”,表示二进制位。
    字长是指字的长度

    1字=2字节(1 word = 2 byte)
    1字节=8位(1 byte = 8bit)
     
    一个字的字长为16
    一个字节的字长是8

    bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。
    Bps即是Byte per second 的简称。而电脑一般都以Bps 显示速度,如1Mbps 大约等同 128 KBps。
    bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
    Byte一个Byte由8 bits 所组成,可代表一个字元(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是记忆体储存资料的基本单位,至於每个中文字则须要两Bytes。当记忆体容量过大时,位元组这个单位就不够用,因此就有千位元组的单位KB出现,以下乃个记忆体计算单位之间的相关性:

    1 Byte = 8 Bits

    1 KB = 1024 Bytes

    1 MB = 1024 KB

    1 GB = 1024 MB

    usb2.0标准接口传输速率。许多人都将“480mbps”误解为480兆/秒。其实,这是错误的,事实上“480mbps”应为“480兆比特/秒”或“480兆位/秒”,它等于“60兆字节/秒”,大家看到差距了吧。

    这要从bit和byte说起:bit和byte同译为"比特",都是数据量度单位,bit=“比特”或“位”。
    byte=字节即1byte=8bits,两者换算是1:8的关系。
    mbps=mega bits per second(兆位/秒)是速率单位,所以正确的说法应该是说usb2.0的传输速度是480兆位/秒,即480mbps。
    mb=mega bytes(兆比、兆字节)是量单位,1mb/s(兆字节/秒)=8mbps(兆位/秒)。

    我们所说的硬盘容量是40gb、80gb、100gb,这里的b指是的byte也就是“字节”。
    1 kb = 1024 bytes =2^10 bytes
    1 mb = 1024 kb = 2^20 bytes
    1 gb = 1024 mb = 2^30 bytes

    比如以前所谓的56kb的modem换算过来56kbps除以8也就是7kbyte,所以真正从网上下载文件存在硬盘上的速度也就是每秒7kbyte。
    也就是说与传输速度有关的b一般指的是bit。
    与容量有关的b一般指的是byte。

    最后再说一点: usb2.0 480mbps=60mb/s的传输速率还只是理论值,它还要受到系统环境的制约(cpu、硬盘和内存等),其实际读、取写入硬盘的速度约在11~16mb/s。但这也比usb1.1的12mbps(1.5m/s)快了近10倍。

    扩展阅读

    字节的来由

    最开始计算机只是处理数据运算,也就是0-9,加上运算符号,4bit足够了。举个例子(实际不是这样):用0000表示0,0001表示1,0010表示2,依次类推。 
    后来加入了字母,程序符号等,8bit也足够了,而这时诞生了ASCII编码的标准,大家就说把8bit表示出来的值叫做字节(byte)吧,于是就有了字节这个单位。 
    所以1byte等于8bit是计算机发展中的一个约定出来的规则。

    汉字:

    1 汉字 = 2 byte = 16 bit (这里不是很准确,当编码不同的时候,1个汉字所占的字节数也会有所不同,有些编码是占 2个字节,有些则不是,可能是 3个或者 4个)

    Java的八大基本数据类型

            字节 内存 取值范围
    数据类型

    基本数据类型

    内置类型

     

    整数类型 byte(字节型) 1 8位

    -128~127

    (-2^7 ~2^7 -1) 

    short(短整型) 2 16位

    -32768~32767

    (-2^15~2^15-1)

    int(整型) 4 32位

    -2147483648~2147483647

    (-2^31~2^31-1)

    long(长整型) 8 64位

    -9223372036854774808~9223372036854774807

    (-2^63~2^63-1)

    浮点类型 float(单精度型) 4    
    double(双精度类型) 8    

    字符类型

     

    char 1    
    布尔类型 boolean 1    
      引用类型          

     

    展开全文
  • 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, ...
  • 1.问题由来 项目中遇到一个将byte字节流转换成有符号整数和无符号整数...如果byte为正数:int value = (byte)aByte ----> 比如 传输8位bits为 0x7f 转化为字节为:aByte=127: 01111111 转化为 int 就是:00000000
  • byte&oxff之格式转换原理解析

    千次阅读 2017-12-13 14:06:22
    最近需要一个将字节数组转换为十六进制字符串输出的函数,于是开始编码如下: ...public static String byteToHex(byte[] bt){ StringBuffer sb = new StringBuffer(); for(int i=0;i;i++){ String tmpStr
  • 16进制的作用以及&0xff详解

    千次阅读 2019-12-26 14:54:35
    1、概述 在看源码的时候,发现有好些地方使用了16进制,在此记录一下。 2、为什么用16进制 计算机硬件是0101二进制的,16进制刚好是2的倍数,更容易表达一个命令或者数据 最早规定ASCII字符集采用的就是8bit(后期...
  • 在Java中 byte型数据在内存中占8位,int型数据在内存中占32位。0xff默认为int型,是十六进制,十进制中表示为255,二进制为32位,后八位为'1111 1111',其他24位均为0;在&运算时,2个bit均为1,则得1,否则得0。 ...
  • Java中byte类型变量做& 0xff运算的理解

    千次阅读 2016-10-01 21:46:34
    Java中byte类型变量做& 0xff运算的理解 在IO字符操作或加密计算时经常会见到byte值与0xff做与运算,这种写法首次看到会有些不解,其实也比较容易理解。下面说下我个人的理解 首先要明白,字符编码中没有负值表示...
  • Bytebyte区别详解

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

    千次阅读 2019-06-27 21:58:55
    在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。 下图展示了每个存储...
  • java里面byte数组和String字符串怎么转换

    万次阅读 多人点赞 2011-04-12 13:42:00
    //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 当做有符...
  • java中char和byte的转换方法

    万次阅读 2019-09-10 09:09:08
    byte[]是字节数组类型,和int[]类似,只是一个是字节型的,一个是整型的; char是UNICOEDE字符,为16位的整数; String是个类,一般用来表示字符串的; hello.getBytes()意思就是把hello这个字符串转化为字节流(byte...
  • java的byte数组的不同写法

    万次阅读 2019-04-17 10:14:24
    一个字节(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
  • Java中byte怎么转化为String

    万次阅读 2018-03-15 17:50:26
    string转化为byte[]数组String str = "abcd"; byte[] bs = str.getBytes();byte[]数组转化为string字符串/*String str1 = "abcd"; byte[] bs1 = str1.getBytes();*/ byte[] bs1 = {97,98,100}; ...
  • Java 十六进制(Hex)与byte数组之间的转换

    万次阅读 多人点赞 2017-11-27 23:00:06
    一、十六进制(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,140,086
精华内容 456,034
关键字:

byte