python能不能用c打开文件_C/C++/Python等 使用二进制模式打开文件与不使用二进制模式的区别...

C语言中文本文件与二进制文件的区别 一、文本文件与二进制文件的定义 大家都知道计算机的存储在物理上是二进制的,所以文本文件与二进制文件的区别并不是物理上的,而是逻辑上的。这两者只是在编码层次上有差异。 简单来说,文本文件是基于字符编码的文件,常

概述: 今天尝试使用c++中的ifstream来读取一个zip文件,结果发现每次都是读取了451个字节就结束了(测试用的zip文件4M多)。

--------------------------------------------------

author: cs_cjl

website:

http://blog.csdn.net/cs_cjl

--------------------------------------------------

测试代码: #include

#include

using namespace std;

int main (int argc, char *argv[])

{

ifstream fs(L"d:/tic.zip", std::ios::binary);

if (fs.is_open ()) {

cout << "file is open" << endl;

}

if (fs.good ()) {

cout << "filestream is good" << endl;

}

char buf[200];

size_t total_size(0);

while (true) {

fs.read(buf, 200);

total_size += fs.gcount ();

if (!fs) {

cout << "read " << fs.gcount () << endl;

cout << "fs.good () : " << fs.good () << endl;

cout << "fs.eof () : " << fs.eof () <

cout << "fs.fail () : " << fs.fail () << endl;

break;

}

}

cout << "read total size: " << total_size << endl;

return 0;

}

通过16进制编辑器查看zip文件,发现第252个字节为0x1a,通过查看 ascii表:

http://en.wikipedia.org/wiki/Ascii 发现它对应Ctrl+Z,由于历史原因,在字符模式下 当遇到这个字符时,读取会结束

结论: 一直以为 二进制模式 和 字符模式 的区别只是对换行符\r \n的处理的不同 通过这次测试发现除了对换行符的处理不同外,字符模式还会对一些控制字符进行处理

参考: wikipedia ASCII:

http://en.wikipedia.org/wiki/Ascii stackoverflow Line reading chokes on 0x1A

http://stackoverflow.com/questions/405058/line-reading-chokes-on-0x1a/405169#405169

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微软MS10-046漏洞的利用

微软MS10-046漏洞的利用 0x00 前言0x01 环境1. 目标机环境2. 攻击机环境3. 拓扑结构 0x02 过程1. 相互ping通2. 启动Metasploit3. 查找和MS10-046相关的模块4. 加载模块5. 设置所使用的payload6. 设置文件共享服务器的地址&#xff0c;应为BackTrack虚拟机的地址7. 设置目标主…

修改mysql 外删除用户_mysql添加用户、删除用户、授权、修改密码等

mysql添加用户、删除用户、授权、修改密码等1.新建用户。 //登录MYSQL >mysql -u root -p >密码 //创建用户 mysql> mysql> insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_sub ject) values("localhost","pppadmin"…

Loadrunner日志设置与查看

Loadrunner日志设置与查看 1.打开EXtended LogLog告诉了我们一切,默认的Log是standard Log,这时远远不够的.我们要extended log,打开路径为runtime settings-->log-->extended log.把parameter substitution和data returned byserver和advanced trace大家根据需要勾选吧.…

使用七牛云对网站进行加速基本配置

看了很多给网站加速的教程,大同小异,觉得还是使用免费的七牛云进行CDN加速,去年使用这个平台给APP加速,效果还不错。 1.打开七牛云存储注册链接:七牛云 注册帐号并且完成系统要求的实名认证要求。一般不需要充钱,冲着免费去的,既可以获得免费的10G流量,一般的小型网站…

java与java ee_Java EE6装饰器:在注入时装饰类

java与java ee软件中常见的设计模式是装饰器模式 。 我们上一堂课&#xff0c;然后在它周围包装另一堂课。 这样&#xff0c;当我们调用类时&#xff0c;我们总是在到达内部类之前通过周围的类。 Java EE 6允许我们通过CDI创建装饰器&#xff0c;作为其AOP功能的一部分。 如果我…

kail利用msf工具对ms10-087漏洞入侵渗透WinXP

1.实验环境: Kali2020:10.20.29.129 Windows 2003:10.20.29.137 两台虚拟机能够相互ping通 2.实验步骤 1&#xff0c; 启动Metasploit 2&#xff0c;查找和MS10-087相关的模块search ms10_087 3&#xff0c;使用exploit/windows/fileformat/ms10_087_rtf_pfragments_bof模…

java gif_使用Java来处理GIF图片

一个2个类&#xff0c;一个是读图片的类GifDecoder&#xff0c;一个是写图片的类AnimatedGifEncoder使用还是挺方便的&#xff0c;下面举个栗子public static void main(String[] args) throws IOException {GifDecoder decoder new GifDecoder();int status decoder.read(&q…

C++ operator 知识点

[转]C隐式类型转换 operator T http://m.blog.csdn.net/blog/micx0124/12389973# 对于operator关健字用于运算符重载这我们都知道&#xff0c;其实operator还有另外一种作用&#xff1a;强制类型转换。上一周为了对应项目中一个问题&#xff0c;同事帮助写了一个类&#xff0c;…

2020年前端招聘技术概览(包含常见的打包工具,框架及前端技术简介)

学习当下前端技术最好的方法就是从求职网站上找出前端的招聘要求,因为前端技术每年变化都很快,每个阶段都会不一样,这里简单从网站招聘要求罗列,仅供参考。更有针对性的是针对每个公司的招聘要求写简历,学习相关技术(除非那个公司特别好) 1.熟悉html,javaScript,css,aja…

java.util.concurrent包

本文是我们学院课程中名为Java Concurrency Essentials的一部分 。 在本课程中&#xff0c;您将深入探讨并发的魔力。 将向您介绍并发和并发代码的基础知识&#xff0c;并学习诸如原子性&#xff0c;同步和线程安全之类的概念。 在这里查看 &#xff01; 目录 1.简介 2. jav…

DVWA通关教程(下)

XSS&#xff08;DOM&#xff09; XSS(DOM)是一种基于DOM树的一种代码注入攻击方式&#xff0c;可以是反射型的&#xff0c;也可以是存储型的&#xff0c;所以它一直被划分第三种XSS 与前两种XSS相比&#xff0c;它最大的特点就是不与后台服务器交互&#xff0c;只是通过浏览器…

Python模拟ICMP包

主要使用Scapy来完成 基础环境 VM1&#xff08;192.168.1.226&#xff09; | | VM2&#xff08;192.168.1.125&#xff09; vm1封装icmp包发给vm2 vm1脚本&#xff1a; #! /usr/bin/env pythonfrom scapy.all import *target "192.168.1.125" ip IP() icmp ICMP()…

SSH暴力破解实战

一.hydra【海德拉】 海德拉&#xff08;Hydra&#xff09;&#xff1a;希腊神话中的九头蛇&#xff0c;是西方的神话生物&#xff0c;在古希腊神话中出现最为频繁。传说它拥有九颗头&#xff0c;其中一颗头要是被斩断&#xff0c;立刻又会生出两颗头来。 Hydra是世界顶级密码暴…

前端工程师必备谷歌浏览器F12下的调试知识点

chrome浏览器版本(所有的操作都是基于我电脑上目前这个版本。) 进入开发者工具的方式:F12 (所有浏览器都可以用F12进入开发者工具),ChromeDev(开发者工具简称)按照类别可以分为下面几种 审查元素 ctrl+shift+c 在页面上选择一个HTML元素并审查它 切换浏览设备 ctrl+…

java createjpeg4_在linux下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片问题

在rh8 linux 下用java的JPEGCodec.createJPEGEncoder(bos)生成jpg图片&#xff0c;XServer已启动。出现如下问题错误提示如下java.lang.InternalError: Cant connect to X11 window server using :0.0 as the value of the DISPLAY variable…

ASP.Net string 类的扩展方法 [转]

string 类的扩展方法列表(基本相同于 IEnumerable<T> 接口的成员列表): Aggregate<> //累加 All<> //是否都满足条件 Any<> //是否有一个满足条件 AsEnumerable<> // AsParallel<> …

Netflix Archaius用于物业管理–基础知识

Netflix Archaius提供了一组精巧的功能&#xff0c;可将动态属性加载到应用程序中。 这篇博客文章只是我所了解的Archaius范围的文档&#xff0c;比我在这里所记录的内容要多得多&#xff0c;但这应该提供一个很好的开始&#xff1a; 默认行为 考虑一个简单的属性文件&#x…

程序员应该如何提问?

提问是软件开发的一个不可避免的环节&#xff0c;各种思想火花地碰撞往往能产生奇妙的结果&#xff0c;但是作为一名傲娇霸气君临天下人见人爱花见花开炒鸡屌的程序员&#xff0c;你是否真的思考和总结过自己的提问方式呢&#xff1f;如何去问一个让双方都满意的好问题并最大程…

Kali利用msf对MS10_061漏洞进行渗透测试

注意事项&#xff1a; kail首次打开metasploit&#xff0c;会初始化数据&#xff0c;可能会有点慢&#xff0c;请耐心等待&#xff01;本文仅供学习漏洞渗透测试&#xff0c;不得用于其他非法用途&#xff0c;否则造成的任何后果自负&#xff01;&#xff01;&#xff01; 1.…

如何判断ios设备中是否安装了某款应用

URL Schemes关键字研究一下即可 常见得URL Schemes见http://www.cnblogs.com/huangzs/p/4491286.html if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:"alipay://"]]) { NSLog(" installed"); NSURL *url [NSURL URLWithStr…