精华内容
下载资源
问答
  • 首先在物理上文本文件和...二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。对于读到的二进制流的解释方式可以分为按文本方式和按二进制方式打...

    首先在物理上文本文件和二进制文件并没有区别,都是以二进制01的形式存放于存储介质中,他们的区别只是逻辑上的区别,这两种方式只是在编码层次上有差别。文本文件是基于字符编码的文件,常见的编码有ASCII编码,UNICODE编码等等。二进制文件是基于值编码的文件,你可以根据具体应用,指定某个值是什么意思(这样一个过程,可以看作是自定义编码)。

    对于读到的二进制流的解释方式可以分为按文本方式和按二进制方式打开,按文本方式比如ASCII码形式解释,就把读到的二进制流每8比特8比特的翻译,存储是反过程,如果按照二进制的方式打开,则没有任何编码解码的过程。

    一:c的文本读写和二进制读写基本没有区别,只是文本读写会对回车换行进行转化,二进制读写不会有转化的过程。

    二:Java提供了很多进行文件输入输出的类,这些类可以分为文本I/O类和二进制I/O类。文本I/O将数据解释成字符的序列,二进制I/O将数据解释成原始的二进制数。文本在文件中如何存储依赖于文件的编码方式。Java对文本I/O提供自动编码与解码

    在文本文件中存储的数据是以人能读懂的方式表示的,而在二进制文件中存储的数据是用二进制形式来表示的。人读不懂二进制文件,它们是为程序读取而设计的。例如,Java源程序存储在文本文件中,可以使用文本编辑器阅读,但是Java的类存储在二进制文件中,使用Java虚拟机阅读。二进制文件的好处是处理它们的效率比文本文件高

    文本文件是字符的序列构成的,二进制文件是由位的序列构成的。例如,十进制整数199在文本文件中是以三个字符序列‘1’、‘9’、‘9’来存储的,而在二进制文件中它是以byte类型的值C7存储的

    1、文本输入输出

    C#用于文本输入输出的类:StreamReader/streamWriter

    Java用于文本输入输出的类:

    Reader:一个读取字符的抽象基类

    Writer:一个向文件中写入字符的抽象基类

    FileReader:以主机上默认的编码方式从文件中读取字符的类

    FileWriter:以主机上的默认编码方式向文件中写入字符的类

    BufferedReader:一个从缓冲区读取字符的类

    BufferedWriter:一个向缓冲区写入字符的类

    PrintWriter:以文本方式输出基本类型值、字符和字符串

    PrintStream:与PrintWriter类似,只是向控制台输出

    PrintWriter类和PrintSream类可以将对象、字符串和数值以文本的方式输出

    out是定义在System类中类型为PrintStream的一个静态变量。默认情况下,out表示标准输出设备,也就是屏幕。可以使用System.setOut(PrintStream)设置新的out

    InputStreamReader类:以指定的编码方案从文件中读取字符的类

    OutpitStreamWriter类:以指定的编码方案向文件中写入字符的类

    InputStreamReader类和OutpitStreamWriter类用于实现字符和字节之间的转化。写入OutpitStreamWriter的字符用指定的编码方案翻译为字节,同样,从InputStreamReader类读出的字符用指定的编码方案解码为字符。可以使用InputStreamReader类和OutpitStreamWriter类的构造函数指定编码方案,如果没有指定它,采用系统默认的编码方案

    InputStreamReader类和OutpitStreamWriter类的getEncoding()方法返回这个数据流使用的编码方案名称

    java程序使用的是统一码(Unicode),从FileReader流中读取一个字符时,返回该字符的统一码。字符在文件中的编码可能不是统一码,Java自动将统一码转换为文件指定的编码

    2、二进制输入输出

    文本输入输出需要进行编码与解码操作,向文件写入字符时,Java虚拟机将输出字符的统一码转化为文件指定的编码,对应地,从文件读取字符时,将文件中指定的编码转化为统一码。二进制输入输出不要求这些转化,向文件写入字节,就是将源字节复制到文件中,从文件读取字节,就是将文件中的字节原样返回

    例如,假设使用文本I/O将字符‘9’写入文件。由于字符‘9’的统一码是0x0039,所以会根据文件的编码方案将统一码为0x0039转化成新的编码。如果用二进制I/O将一个值存入文件,那么该整数在内存中的精确值被复制到文件中

    由于二进制I/O不需要编码和解码,所以要比文件I/O效率高。二进制文件与主机的编码方案无关,因而是可移植的,所以Java程序可以在任何机器上访问Java程序创建的二进制文件。这也是把Java的类文件存储为二进制文件的原因,因为Java类文件可以在任何具有Java虚拟机的机器上运行

    C#二进制输入输出的类:FileStream

    Java用于二进制输入输出的类:

    InputStream:用于字节输入流的抽象基类

    OutputStream:用于字节输出流的抽象基类

    FileInputStream:一个从文件读取字节的类

    FileOutputStream:一个向文件写入字节的类

    DataInputStream:用于读取基本类型数据值和字符串的类

    DataOutputStream:用于输出基本类型数据值和字符串的类

    BufferedInputStream:一个从缓冲区读取字节的类

    BufferedOutputStream:一个向缓冲区内写入字节的类

    FilterInputStream类和FilterOutputStream类:

    过滤器数据流是为某种目的过滤字节的数据流。基本字节数如流提供的读取方法只能用来读取字节。如果想要读取整数值、双精度值或字符串,需要一个过滤器类来包装输入流。使用过滤器类就可以读取整数值双精度值或字符串,而不仅仅是字节或字符

    DataInputStream扩展了FilterInputStream类并实现了DataInput接口,实现了定义在DataInput接口中读取基本类型值和字符串的方法

    DataOutputStream扩展了FilterOutputStream类并实现了DataOutput接口,实现了定义在DataOutput接口中输出基本类型值和字符串的方法

    3、小结

    从本质上说所有文件都是二进制文件,文本I/O是在二进制I/O基础上提供的一层抽象,它封装了字符的编码和解码过程。在文本I/O中自动进行编码与解码。对于二进制输入,要想能够以正确的类型和正确的顺序读取,并须准确地了解数据是如何让写入的

    将一个字节写入字节流时,字节的确切值发送到输出流。将一个字符写入字符流时,字符按照编码方案转换成它对应的数值。

    从字节流中读取一个字节时,是从输入流读出一个字节的值。而从字符流中读取一个字符时,读取稽几个字节依赖于编码系统

    ACSII码占8位,Java使用的是16位的Unicode码。当一个统一码无法转换为ACSII码时,转换为字符‘?’。例如,如果想把统一码‘u03b1’写到字符流中,送入到字符流的是数值63(表示字符‘?’)。

    文本文件依赖于主机所使用的编码系统,所以将一个文本文件从一台机器转到另一台机器上时,如果两台机器的编码不同,可能会出现错误

    展开全文
  • Java 二进制数据转成文件

    千次阅读 2021-02-12 15:46:50
    /*** @Title: byteToFile * @Description: 把二进制数据转成指定后缀名的文件,例如PDF,PNG等 *@paramcontents 二进制数据 *@paramfilePath 文件存放目录,包括文件名及其后缀,如D:\file\bike.jpg * @Author: ...

    importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;public classFileUtils {private static Logger logger = LoggerFactory.getLogger(FileUtils.class);/*** @Title: byteToFile

    * @Description: 把二进制数据转成指定后缀名的文件,例如PDF,PNG等

    *@paramcontents 二进制数据

    *@paramfilePath 文件存放目录,包括文件名及其后缀,如D:\file\bike.jpg

    * @Author: Wiener

    * @Time: 2018-08-26 08:43:36*/

    public static void byteToFile(byte[] contents, String filePath) {

    BufferedInputStream bis= null;

    FileOutputStream fos= null;

    BufferedOutputStream output= null;try{

    ByteArrayInputStream byteInputStream= newByteArrayInputStream(contents);

    bis= newBufferedInputStream(byteInputStream);

    File file= newFile(filePath);//获取文件的父路径字符串

    File path =file.getParentFile();if (!path.exists()) {

    logger.info("文件夹不存在,创建。path={}", path);boolean isCreated =path.mkdirs();if (!isCreated) {

    logger.error("创建文件夹失败,path={}", path);

    }

    }

    fos= newFileOutputStream(file);//实例化OutputString 对象

    output = newBufferedOutputStream(fos);byte[] buffer = new byte[1024];int length =bis.read(buffer);while (length != -1) {

    output.write(buffer,0, length);

    length=bis.read(buffer);

    }

    output.flush();

    }catch(Exception e) {

    logger.error("输出文件流时抛异常,filePath={}", filePath, e);

    }finally{try{

    bis.close();

    fos.close();

    output.close();

    }catch(IOException e0) {

    logger.error("文件处理失败,filePath={}", filePath, e0);

    }

    }

    }

    }

    展开全文
  • 提供了一个接近1G的二进制文件,内容为振动数据(包含头数据 、有效数据、尾数据),要求解析入库 2.思路 运行在flink上,从文件中增量抽数据,flatmap处理,最后sink到redis中 public class SourceFromFile extends...

    1.场景

    提供了一个接近1G的二进制文件,内容为振动数据(包含头数据 、有效数据、尾数据),要求解析入库

    2.思路

    运行在flink上,从文件中增量抽数据,flatmap处理,最后sink到redis中

    public class SourceFromFile extends RichSourceFunction<byte[]> {
        private volatile Boolean isRunning = true;
    
        @Override
        public void run(SourceContext ctx) throws Exception {
    
            File file = new File("/root/Ca.bin");
            FileInputStream fi = new FileInputStream(file);
            byte[] buffer = new byte[413264];
            fi.read(new byte[10]);
            int count=0;
            while (isRunning) {
                int read = fi.read(buffer, 0, 413264);
    
                if(read==413264){
                    ctx.collect(buffer);
    
                }else {
                    isRunning=false;
                }
            }
            fi.close();
        }
    
    
        @Override
        public void cancel() {
            isRunning = false;
        }
    }
    
    
    public class ReadF {
        public static void main(String[] args) throws Exception {
            StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
            DataStreamSource<byte[]> dataStream = env.addSource(new SourceFromFile());
            SingleOutputStreamOperator<Tuple3<String, String, Object>> flatMap = dataStream.flatMap(new FlatMapFunction<byte[], Tuple3<String, String, Object>>() {
                @Override
                public void flatMap(byte[] buf, Collector<Tuple3<String, String, Object>> out) throws Exception {
                    StringBuffer sb = new StringBuffer();
                    for (int i = 0; i < 3; i++) {
                        String hex = Integer.toHexString(buf[i] & 0xFF);
                        if (hex.length() == 1) {
                            hex = '0' + hex;
                        }
                        sb.append(hex.toUpperCase());
                    }
                    String s = UUID.randomUUID().toString();
                    Tuple3<String, String, Object> modify = Tuple3.of(s, "modify", sb.toString());
                    out.collect(modify);
                    Tuple3<String, String, Object> num = Tuple3.of(s, "num", (buf[3]&0xFF) + "");
                    out.collect(num);
                    Tuple3<String, String, Object> car = Tuple3.of(s, "car", (buf[5] & 0xFF)+ "");
                    out.collect(car);
                    Tuple3<String, String, Object> sign = Tuple3.of(s, "sign", (buf[6]& 0xFF) + "");
                    out.collect(sign);
                    Tuple3<String, String, Object> time = Tuple3.of(s, "time", (2000 + (buf[7]& 0xFF)) + "年" +  (buf[8]& 0xFF) + "月" + (buf[9]& 0xFF) + "日" + (buf[10]& 0xFF) + "时" + (buf[11]& 0xFF) + "分" + (buf[12]& 0xFF) + "秒");
                    out.collect(time);
                    ArrayList<Integer> list = new ArrayList<>();
                    for (int i = 1; i < 409933 / 16; i++) {
                        int sum=0;
                       for(int j=0;j<16;j++){
                           sum+=(buf[16*i+j]& 0xFF);
                       }
                       list.add(sum);
                    }
                    Tuple3<String, String, Object> of = Tuple3.of(s, "振动" , list);
                    out.collect(of);
                }
            }).setParallelism(2);
            flatMap.addSink(new MyRedisSink());
            env.execute();
    
        }
    }
    
    class MyRedisSink extends RichSinkFunction<Tuple3<String, String, Object>> {
        private transient Jedis jedis;
    
        @Override
        public void open(Configuration config) {
            jedis = new Jedis("192.168.1.127", 16379, 20000);
            jedis.select(2);
        }
    
        @Override
        public void invoke(Tuple3<String, String, Object> value, Context context) {
            if (!jedis.isConnected()) {
                jedis.connect();
            }
            //保存
            jedis.hset(value.f0, value.f1, String.valueOf(value.f2));
        }
    
        @Override
        public void close() {
            jedis.close();
        }
    
        public static void main(String[] args) {
            long l = System.currentTimeMillis();
            Jedis jedis = new Jedis("192.168.1.127", 16379, 20000);
            jedis.select(2);
            String hget = jedis.hget("test", "振动");
            ArrayList list=new ArrayList(Arrays.asList(hget.split(",")));
            String s = (String) list.get(2);
            System.out.println(s);
            long l1 = System.currentTimeMillis();
            System.out.println(l1-l);
        }
    
    }
    
    
    展开全文
  • 二进制数据转化为excel

    千次阅读 2019-12-04 11:52:33
    原理就是通过a标签的href属性将二进制表格数据转化为表格,再通过download属性将文件下载到本地; 需要注意的是接口请求的数据类型要设置为 blob 类型 具体参考 axios https://www.npmjs.com/package/axios ...

    原理就是通过a标签的href属性将二进制表格数据转化为表格,再通过download属性将文件下载到本地;
    需要注意的是接口请求的数据类型要设置为 blob 类型 具体参考 axios https://www.npmjs.com/package/axios

      responseType: 'blob'
    

    具体的代码

       let url = window.URL.createObjectURL(res.data);
       let link = document.createElement('a');
       link.style.display = 'none';
       link.href = url;
       link.setAttribute('download', filename); // filename 自定义下载的表格名称及后缀名;
       document.documentElement.appendChild(link);
       link.click();
       document.documentElement.removeChild(link);
    

    完整的例子:

    	 // 首先要引入axios
    	  import axios from 'axios';
    	// 组件内部新增方法
          downloadExl(filename) {
            axios({
                method: 'get',
                url: '/api/export',
                params: Object, // Object 导出接口所需要的参数对象 
                responseType: 'blob'
              }).then(res => {
                let url = window.URL.createObjectURL(res.data);
                let link = document.createElement('a');
                link.style.display = 'none';
                link.href = url;
                link.setAttribute('download', filename);
                document.documentElement.appendChild(link);
                link.click();
                document.documentElement.removeChild(link);
              }).catch(e => {
              	console.log('导出失败')
              }).finally(() => {
              	console.log('不管导出成功/失败')
              });
          },
    
    展开全文
  • 二进制数据存入数据库

    千次阅读 2018-06-05 16:11:22
    //创建二进制序列化器  Stream fStream2 = new FileStream(fileName, FileMode.Open, FileAccess.Read);  DataSet ds = (DataSet)binFormat.Deserialize(fStream2);//反序列化对象  return ds;  }    ///   ...
  • 欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 一般我们都是按照文件扩展名来判断文件类型,但是这个很不靠谱,轻易就通过修改扩展名来躲避了,一般必须要读取文件信息来识别。...
  • 二进制、八进制、十进制、十六进制前缀

    千次阅读 多人点赞 2020-07-15 11:02:25
    二进制:(前缀:0b/0B)(后缀:b/B) 八进制:(前缀:0)(后缀:o/O) 十进制:(前缀:无,可加+/-)(后缀d/D) 十六进制:(前缀:0x/0X)(后缀:h/H)
  • 一种C#读写二进制文件的通用方法-转 可学习学习,不错的解决方法。
  • 我是在做控制台日志的时候,后台是通过websocket返回的二进制数据流,我需要让这些数据可以通过下载按钮下载为.log后缀的日志文件 Blob 在一般的Web开发中,很少会用到Blob,但Blob可以满足一些场景下的特殊需求。...
  • C语言二进制方式读写文件数据

    千次阅读 2020-08-08 17:39:03
    fwrite(buffer, size, count,fp):以二进制的形式向指定的文件中写入若干数据项(由count决定),返回实际写入的数据项数目,各参数含义如下: buffer:一个存储区的起始地址,以该地址开始的存储区的数据即是保存...
  • 1. 什么是.bin文件扩展名为.bin的文件就是一个二进制文件(binary)。不同于文本文件,二进制文件用记事本、Notepad++等打开都是乱码。像是这样:但是.bin文件可以用WINHEX等软件打开。二进制文件里面存储的都是数据,...
  • 在WebSocket中使用protobufjs对二进制数据进行解码编码 现在的项目中有一个需求是通过WebSocket连接后端进行视频回放功能的实现 由于是HTTPS网页,WebSocket中使用wss进行连接,在连接时也时有一些坑的, wss连接...
  • python将数据存为二进制,并用c++读取 文章目录python保存二进制文件c语言读取二进制文件到数组后续疑问值得学习的文章 python保存二进制文件 python将float32类型的numpy数组以二进制形式保存到txt文本中 代码 with...
  • mysql通过binlog二进制日志恢复数据

    千次阅读 2018-03-20 17:13:37
    有些萌新做事的时候经常大大咧咧,有一天萌新心血来潮写了个sql delete from tablename 然后小手指一点,糟了没加where条件。...那么没有备份的时候呢,你最好祈祷开了二进制日志binlog。神马?二...
  • 二进制小总结

    千次阅读 2021-03-09 05:39:39
    真值与机器值真值很好理解,就是十进制的数字前面再加上...计算机中通过高低电平表示1或者0,这样就可以表示一个二进制的数值。一个1或者0表示的数值位称为一个bit,而计算机中存储和传输数据的最小单位是一个字节...
  • 华为CDR话单二进制文件转换成对应的可读文件txt。资源中包含了两个文件,一个是解析话单的 T.java 文件,另一个是封装解析出来数据所对应的java Bean。
  • Qt 二进制文件读写

    千次阅读 2021-02-25 21:39:28
    Qt 使用 QFile 和 QDataStream 进行二进制数据文件的读写: QFile 负责文件的 IO 设备接口,即与文件的物理交互; QDataStream 以数据流的方式读取文件内容或写入文件内容。 QDataStream 保存文件时使用的数据编码...
  • 如果有些文件,比如是媒体文件,因格式太多...这些头部编码可以用UltraEdit或是winhex来能过二进制方式打开文件来查看 1、从Ultraedit查看的头部编码 JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47
  • 二进制,十进制,十六制...二进制转换为十进制计算公式:二进制数据X位数字乘以2的X-1次方的积的总和例:10101011b=()d数据10101011X-1位76543210相应的十进制值即为:27+25+23+21+20=128+32+8+2+1=1712.十六进制转...
  • 什么要用到二进制

    千次阅读 2020-04-01 23:25:12
    什么要用到二进制? 数字电路非常广泛,小到逻辑门电路,大到超大规模集成电路,手机,电脑,智能设备……数字信号即可以表示数字,也可以表示非数值的信息,如文字,声音,图片,视频。如何将这些非数值类的信息...
  • 创建数据文件和日志文件存放目录:D:\MySQL\Data;D:\MySQL\Log 3.创建my.ini  在C盘根目录下创建my.ini文件(注意隐藏的文件后缀名),内容如下(只列出安装的一些需要的配置):  [client] no-beep socket =0.0 ...
  • java二进制转换为图片

    2021-03-06 13:03:35
    Java将大图片转成小图片_IT/计算机_专业资料。...BMP图格式 二进制转换 C#下将 BMP 转换成二进制是比较容易的,方法如下: 下将 转换成二进制是比较容易的,方法如下: ......Base64 编码转换二进制图片 201...
  • 使用save可以实现对numpy数据的磁盘存储,存储的方式是二进制。查看使用说明,说明专门提到了是未经压缩的二进制形式。存储后的数据可以进行加载或者读取,通过使用load方法。 In [81]:np.save('demo',data1) 通过...
  • 在上一篇文章的基础上,接下来我想具体实现一下,将我提取出来的wav文件的采样数据保存到自己设计的二进制文件格式当中,首先为我即将设计好的二进制文件格式取一个后缀名(.sk)。 1、初步设计 在上一篇文章的基础...
  • 利用栈完成数制转换,能够完成十进制向八进制的转换 C++ 这里我采用栈的顺序存储结构 Source Code #include <stdio.h> #include <malloc.h> #define MaxSize 100 typedef int ElemType; ...
  • package hustspy.encrypt; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;...public class File...
  • 玩转前端二进制

    千次阅读 2020-07-08 17:00:00
    本文阿宝哥将按照以下的流程来介绍前端如何进行图片处理,然后穿插介绍二进制、Blob、Blob URL、Base64、Data URL、ArrayBuffer、TypedArray、Dat...
  • 1.有时候,前端页面上需要展示后台接口返回给...Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是js中的一个对象,里面可以储存大量的二进制编码格式的数据。   2.创建Blob 对象   var debug ...
  • 程序员二进制计算器 v1.36

    热门讨论 2014-07-16 16:21:43
    二进制数据表达方式多样,数据可以K、M、G等单位为后缀。 支持类C语言库函数调用。 结果可以各种进制、各种单位输出。 运算结果可存放在变量中。 内置常用生活函数。 总之,此计算器相当于解释执行的C语言表达式,但...
  • 二进制(标识B)十进制.ppt计算机中数据的表示 十进制 - Decimal 由十个符号组成 逢十进一 运算规则多 容易理解 八进制 – Octal 由八个符号组成 逢八进一 二进制 - Binary 由二个符号组成 逢二进一 运算规则简单 物理...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,293
精华内容 38,917
关键字:

二进制数据的后缀是什么