Byte和byte[]数组,“表示一个 8 位无符号整数, 一般为8位二进制数”。

Byte是计算机最基础的存储单位和最基础的通讯单位。

而所有的类型都是支持由byte[]类型转换而来。

为什么说Byte是最基础类型那,

其实这里的关键所在是,计算机最基础的算法是编码,包括媒体文件、图片、各种文档以致计算机算有数据的文件展现都是字符串,而这些字符串都是由编码得来。

不管你是各种千奇百怪的字符串组成的格式,最终都要根据编码表,字符转换成相对应的十进制数字,而这相应的十进制数字那,就会存储在byte[]数组中(这里的十进制数是用来计算的,存储时会自动转换为二进制数字存储,程序计算时会按十进制计算)。

媒体文件、图片、各种文档等等—》源文件由字符串组成,多个字符—》单个字符—》十进制数字(根据相应编码)—》byte[]数组(单个字符) —》byte[]数组(多个字符) —》媒体文件、图片、各种文档等等存储单位或通讯单位。

此时这个“单个字符”二进制的长度就是根据相应编码得来的,由多个字符组成的byte[]就组成了媒体文件、图片、各种文档等等的源文件。

具体如下:

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。

下面可以看到UTF-8编码的byte[]数组(C# byte[]默认存储计算为十进制),所以说最终计算机数据是由byte类型组成数据为基础的。

网络传输:

如果是自己程序间的对接,byte[]类型理论上就够了(实际上也不够,哈哈),在传输段传输byte[]类型,收取端收取byte[]类型,然后转化为原格式就可以了。

“a张”编码—>byte[0]=97、byte[1]=229、byte[2]=188、byte[3]=160(byte[0]=01100001、byte[1]=11100101、byte[2]=10111100、byte[3]=10100000)—>传输—>收取为byte[]—> 解码“a张”。

但是如果传输的数据是开放式的,或者生成可读的文件,比如文件格式的,url,xml、json的话,是不能存储byte[]型的,看不懂也没法解析,这就要求再吧byte[]再编码为字符串类型。

到了网络传输过程了,前文我们已经得到了文件最基础的存储格式,byte[]数组,但作为程序传输他面临个问题,因为程序传输一般可见的是以字符形式传输的(中间过程是网络层自动转换的),那么就需要把byte[]类型转换为字符串传输,很多人是感觉怎么有转换为字符串了,这不是和原来一样了吗,其实不是,现在编码的就不是任意字符串了,是基础的二进制数字10做成的字符串,相当于把byte[]类型每个byte转换为字符串传送,而在接收端在转换为byte[]数组,这相当于无编码过程。

byte[]是数据类型的,长度是有限制的,也不灵活。所以说基础传输其实是1和0组成的长字符串。

简单的说就是数据编码成byte[],byte[]再二次编码成为易于传送的字符串。

如下

“a张”编码—>byte[0]=97、byte[1]=229、byte[2]=188、byte[3]=160(byte[0]=01100001、byte[1]=11100101、byte[2]=10111100、byte[3]=10100000)—>不编码“01100001111001011011110010100000” —>传输—>解析成为byte[]—>解码“a张”

“a张”编码—>byte[0]=97、byte[1]=229、byte[2]=188、byte[3]=160(byte[0]=01100001、byte[1]=11100101、byte[2]=10111100、byte[3]=10100000)—>  base64 编码串—>传输—>解析成为byte[]—>解码“a张”

更多的是,在转换字符串传输的过程,还要对这个byte[]进行编码。

注1:在传输过程中,基础的byte[]类型还可以做各种编码传输,如base64字符串、16进制编码、xml、json、html等等,不过万变不离其中的是编码和解码。

注2:“传输”时,还是以基础二进制数据传输,不过这和应用层无关,是传输层自动完成了,应用层的数据只需要处理自己的传输格式就可以了。

转载于:https://www.cnblogs.com/cuihongyu3503319/p/5031670.html

Byte和byte[]数组相关推荐

  1. 使用java把 byte 或 byte 数组转换成无符号数字

    byte/ byte 数组转换成16进制字符串 (需要Netty) ByteBufUtil.hexDump(new byte[]{0x11, 0x11, 0x11, 0x11})ByteBufUtil ...

  2. java byte追加_byte数组追加 java

    package com.yyy.test; import java.util.zip.CRC32; public class TestJava { public static void main(St ...

  3. C# 指针的使用 ref byte 转 byte 或 byte [] ref 与指针

    C# 不推荐用指针,但可以使用指针,同时在某些情况下又不得不使用指针,比如C#调用了C++的DLL,而经常会用到指针 下在介绍C#代码中使用指针: 1,首先要使用指针,先在要C#工程属性中设置 ( 右 ...

  4. 串口开发,数据类型转换——字符串转 byte[],byte[]转二进制,二进制转十进制转byte[],byte[]转十进制,byte[]拼接,校验

    bytez转String /*** 字节数组转换成对应的16进制表示的字符串** @param src* @return*/ public static String bytes2HexStr(byt ...

  5. char byte java_java byte与char互转原理-转 | 学步园

    一.字节和unicode Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的.因此Java要对这些字节流经 行转化. char是unicode的 ...

  6. 定义变量byte a = (byte)128输出a的结果

    (byte)128输出的结果为什么是-128? ** 例: 定义变量byte a = (byte)128输出a结果为(B) A.128 B.-128 C.0 D.-127** ** 解析: 在JAVA ...

  7. Byte和byte区别详解

    写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍 1:byte和Byte详解 byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数 ...

  8. 无符号 byte java_java byte的无符号表示

    1. 将一个整数转换为字节(如将整数255转换为字节) byte b1 = (byte)255 输出: b1 = -1 2. 将字节转换为无符号数(如将-1转换为无符号数) byte b1 = -1 ...

  9. java中byte和Byte详解

    写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍 1:byte标题和Byte详解 byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储 ...

最新文章

  1. 80年代高考数学卷,共10套,有您做过的高考卷吗?
  2. Python 常用文件
  3. 用redis+jwt保存在线用户和获得在线用户列表、踢出用户示例
  4. CkEditor批量上传图片(java)
  5. python可以帮机器人编程吗_Python如何实现机器人聊天
  6. Nginx配置优化参考
  7. geotools绘制椭圆API
  8. android图像与动画处理,在Android和iPhone上对照片进行动画处理的7种最佳应用 | MOS86...
  9. officescan 不输入密码卸载
  10. EXCEL 求解线性规划问题
  11. C语言 汉字ASCII转Unicode
  12. 亚马逊云科技入门资源中心,从0到1轻松上云
  13. 心电电路算法滤波_心电信号噪声的数字滤波研究
  14. java全能速查宝典_Java全能速查宝典_IT教程网
  15. 40vf什么意思_什么是VF技术?
  16. PXC 避免加入集群时发生SST
  17. 2021年中式烹调师(中级)考试题及中式烹调师(中级)找解析
  18. android中的长按复制
  19. php 5.3.1 preg_quote
  20. vc经验(它山之石)

热门文章

  1. php基础不好,基础不好,问个php类调用的初级问题
  2. mysql如何开启远程链接_mysql怎么开启远程连接
  3. POJ 2955 区间DP必看的括号匹配问题,经典例题
  4. 线程安全存储以及pthread_getspecific/pthread_setspecific
  5. [机器学习] 二分类模型评估指标---精确率Precision、召回率Recall、ROC|AUC
  6. cmake-gui出错解决方法
  7. C#使用HttpClient进行http操作
  8. 概率编程编程_概率编程语言的温和介绍
  9. 为什么苹果有2500亿美刀不用,偏偏要借钱?
  10. SQL多字段模糊查询