zoukankan      html  css  js  c++  java
  • 字节流与字符流学习

    转自:https://blog.csdn.net/zxman660/article/details/7875799

    https://blog.csdn.net/cynhafa/article/details/6882061

    1.字节流与字符流

    所有文件在磁盘中的存储都是字节形式,而字符是在内存中形成的。

    • 字符流是对两个字节编码,比如说文本文件中存储字符串(一段英文或者汉字),有很多种编码吧,UTF-8、Unicode等;
    • 而字节是一次只处理一个字节,比如说针对图片或者二进制文件。

    适用情况:

    字符流适用多国语言,关于文本的使用字符流比较好;而针对图片、视频、音频这些要使用字节流。

    2.区别

    字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的;而字符流在操作的时候是使用到缓冲区的,通过缓冲区再操作文件。

    缓冲区是什么?

    一段内存区域,

    //字符需要转换为字节才能写入文件,那字节怎么就直接写入了?还是说因为读取的时候就需要那一段缓冲区来存储所有的字符,而不是专门在写出时开辟的内存吧,这样理解好一点。还是不太懂为什么字节流就可以直接操作,因为它不需要转换成字符?读进来直接写出?没有编码成字符的过程?那么这么说其实文本文件也可以通过字节流来操作了,就能实现不使用缓冲区写出?

    3.联系

    https://www.zhihu.com/question/39262026

    字节,一个字节=8位,大多数情况下,字节是数据最小的基本单位。那么如何将字节表示为有意义的人类能够看懂的数据呢?就出现了不同的编码机制。

    UTF-16中用两个字节来表示一个字符。

    UTF-8中用到了可变长编码,用几位冗余信息告诉系统,当前字符有没有结束,是不是还需要继续往下读下一个字节。

    那么视频是如何编码解码的呢?

    https://zhuanlan.zhihu.com/p/93398878,https://zhuanlan.zhihu.com/p/143993517

    针对图片来说,可以视为一个二维矩阵,彩色图片有RGB三个通道,可以实现编码解码。

    那么对于视频,从时间序列上的帧,对画面可以进行隔行扫描等。

    使用 VideoCapture视频捕获对象,去捕获视频流, opencv会自动完成视频流的解码操作,并返回视频流的编码格式、帧率等信息。

  • 相关阅读:
    ASP.NET MVC5+EF6+EasyUI 后台管理系统(28)-系统小结
    用谷歌浏览器来当手机模拟器
    解决PHP使用CVS导出Excel乱码问题
    Linux系统中关于Sqlite3中文乱码问题及解决办法
    解决excel日期变成数字的问题
    基于IE的多标签的浏览器-世界之窗2.4
    Thinkphp 获取所有子分类或父分类ID
    PhpExcel 删除默认的Sheet
    Mysql 创建表时错误:Tablespace for table `tablexx` exists. Please DISCARD the tablespace before IMPORT.
    关于ThinkPhp中getField方法存在的问题
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/14470768.html
Copyright © 2011-2022 走看看