c语言 乱码转化为16进制_面向小白的C语言科普教程(一)文件和扩展名、编码和十六进制...

前言

本系列文章偏向科普向,出发点是因为某乎每天都给我推送有关C语言基础的低质问题,答得多了发现不仅收不到赞,甚至会因为太弱智而掉粉。所以萌生了尝试给有想要了解、学习C语言及相关计算机知识的同学复制一条自身觉得可能会比较高效的路线的想法,目标是让电脑小白在学习的过程中了解计算机自底向上尽可能全面的相关知识,进而真正地学会C语言。毕竟C语言与其他语言不同,比较偏向底层,如果完全不了解体系结构和操作系统相关的知识,学到指针一章会变得非常吃力。

文章并不能代替完整全面的教程,更不能代替实践操作。如果读者不满足于科普,而是想切切实实地找到程序员相关的工作,最好还是能够选择更加系统的书面教材,并切记编程是一门实践课,必须有目的地练习,积累相当规模的代码量,踩过足够多的坑,才能在工作中游刃有余。

任何一个电脑小白开始对计算机感兴趣的契机,一定是他开始意识到双击【此电脑】(旧称【我的电脑】)能打开【资源管理器】,里面有着各式各样的【文件】,而不只满足于双击【桌面】上或者【开始菜单】里安装的各种软件的【图标】。

电脑小白当然也知道资源管理器里看到的文件分为很多类型,比如音频文件、视频文件、word文件、excel文件,但是你问小白这些文件该怎么区分,小白大概会觉得就是【文件名】左边的图标长得不一样,还有就是双击之后会启动不同的软件。如果你教小白写个【批处理】,告诉他保存为bat文件,大概率会弄出一个1.bat.txt这样的文件名。

所以但凡是懂点电脑的,装机后第一件事是需要到【文件夹选项】里把【隐藏已知文件的扩展名】取消勾选。这时候会发现电脑上的文件都变成了http://123456.xxx这样的名字,其中最后有个句点加(通常是)三个字母,这三个字母就叫做【扩展名】,起着提示这个文件是什么文件类型,以及启动对应的软件打开它们的作用。

你可以看见音频文件有mp3,视频文件有mp4、avi,word文件是docx,下载的压缩包是zip、rar,解压之后里面有个带图标的exe双击就能用,还有很多的图标上画着两个齿轮的dll文件虽然不知道是什么鬼但是好像听大佬说过千万不能乱删。

你还知道,文件有大小,比如文本文件比较小,图片和音乐文件大一些,视频文件最大。或许还听说过卖U盘的说什么1KB=1024B,1MB=1024KB,1GB=1024MB之类的单位换算。

文件里面到底写着啥,为什么不亲自打开看一看呢。我们知道双击txt文件能打开记事本看到里面的内容,其实记事本作为最简单的编辑器,其实是能打开并显示任意文件的内容的。尝试:用记事本打开一些别的扩展名的文件,比较方便的做法是先打开记事本,然后把文件图标从资源管理器拖动到记事本里。不要用记事本打开超过1MB大小的文件,会很卡,另外如果不是自己熟悉的文件,不要修改和保存以免损坏。

于是你看到了“乱码“,包括各种奇怪的字符和不认识的汉字。所谓的乱码,并不是代表计算机出错了,只是说明你没有看懂,或者阅读的方式不太对,类似你第一次看到文言文的而且还是用繁体字写的感受。没关系,下载一个二进制编辑软件,例如UltraEdit或者WinHex,用这类软件来打开,可以看到文件真实的面貌。

【字节Byte】是计算机程序世界中的最小操作单位,一个字节由8个【比特位bit】组成。bit就是我们常说的【二进制】位,有0和1两种状态,那么8个bit最多能表示2的8次方也就是256种不同的情况,也就是取值范围为0-255的一个数字。

可见一个字节能表示的范围足够【编码】所有的英文【字符】,包括大小写字母、数字、英文符号。人类于是制定了【ASCII】编码表,规定从48到58代表数字0到9,从65到90代表大写字母A到Z,等等。尝试:有种方法可以直接键入ASCII的序号来输入字符,打开记事本,按住Alt键,用数字小键盘输入65,放开Alt键,可以看到输入了大写字母A。

由于写下8个01010101这样的二进制数比较费纸而且很难阅读,所以人类通常用两个【十六进制】数来表示一个字节。十六进制就是在十进制基础上加了ABCDEF六个数字,数数是这样数的0 1 2 … 9 A B … F 10 11 … 9F A0 A1 … FE FF 100。在二进制编辑软件中,可以看到任何文件存放的都是十六进制的数据。

比如txt文件看到的就是你在记事本里保存的内容,英文和数字占一个字节,汉字一般占两个字节(因为汉字显然大于256个,但少于256*256=65536个)。

比如zip文件虽然看不大懂,不过【文件头】总是有两个字符“PK”,exe和dll文件虽然也看不大懂但文件头总是有两个字符“MZ”。

比如bmp文件其实是能看懂其中一部分的,那就是图像的像素数据,每个像素占用3个字节,RGB分别取值0-255,可以表示约1600万种不同的色彩(是不是想起了不管什么手机摄像头,广告词上都是这个数字)。尝试:用画图填充一个黑色的BMP文件,然后用二进制编辑软件把画面中部随便一些像素改成白色(不要修改文件头)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值