Thi*_*ork 5 binary ascii colors
我最近一直在考虑计算机硬件必须做什么工作才能生成我们期望的东西.
比较文本和颜色,似乎两者都依赖于1和0的组合,每个字节有256种可能的组合.ASCII可以表示诸如(01100001)之类的字母为字母"A".但是那时可能有颜色R(01100001),G(01100001),B(01100001)代表一些随机颜色.考虑到低级别,计算机只是读取这些1和0的集合,需要发生什么以确保计算机呈现颜色R(01100001),G(01100001),B(01100001)而不是字母A三次在我的屏幕上?
我不完全确定这个问题适合Stack Overflow,但我会继续并提供基本答案.虽然这实际上是一个非常复杂的问题,因为根据你想要回答它的深度,我可以写一本关于计算机体系结构的书,以便这样做.
所以为了保持简单,我只会告诉你:这完全是一个背景问题.首先让我们来处理文字:
当你打开文本编辑器时,隐含的假设是显示在其中的数据本质上是文本的.要显示的文本是内存中的某些字节(可能是从磁盘上的某些字节中复制出来的).从内存的角度来看,没有神奇的内部上下文,这些字节是文本.相反,文本编辑器的源包含一些指向那些字节的命令,并说"这些字节代表300个字符的文本".然后是一个复杂的步骤序列,涉及库代码一直到硬件,处理根据ASCII(编码文本的许多其他方法)等编码将字符映射到字符,在字体中查找这些字符,将该字体写入屏幕等
问题的关键是它不具有解释这些字节的文本.它只是因为这是文本编辑器的作用.您可以假设在图像程序中打开它并告诉它将相同的300字节解释为RGB值的10x10阵列(或图像).
至于颜色,同样的逻辑适用.它们只是内存中的字节数.但是当向屏幕绘制某些内容的代码确定了要用什么颜色写入的像素时,它会通过内存映射将这些字节传输到视频卡,然后将其转换为发送到监视器的命令(仍然以某种二进制格式表示像素和颜色,虽然现实情况要复杂得多),并且显示器本身包含固件,然后处理将这些颜色映射到物理像素的细节.表示颜色本身的数字将在某一时刻转换为每个R/G/B通道的特定电流,以提高或降低其强度.
这就是我现在所有的时间,但这是一个开始.
更新:为了说明我的观点,我从这里获取了Flatland的文本.这只是216624字节的ASCII文本(根据上下文由您的Web浏览器解释:.txt扩展名有帮助,但Web服务器还提供MIME类型标头,通知浏览器它应该被解释为纯文本.您的浏览器也可能会分析字节以确定它们的模式看起来像纯文本的模式(并且没有绝大多数字节不代表ASCII字符).我在文本的末尾添加了几个空格所以其长度为217083,即269*269*3,然后将其绘制为269 x 269 RGB图像:

看起来并不十分有趣.但重点是我只是采用了相同的字节并告诉软件,"好吧,现在这些都是RGB值".这并不是说查看纯文本字节,因为图像无用.例如,它可以是可视化加密算法的有用方法. 这显示了使用非常不安全的算法加密的图像 - 您仍然可以非常好地了解原始未加密文件中的字节模式.如果它是文本而不是图像,那么这将没有什么不同,因为像英语这样的特定语言中的文本也具有已知的统计模式.一个好的加密算法看起来会使加密图像看起来更像随机噪声.