最近在看字符编码的相关知识,又联想到二进制代码的知识,由于本人不是科班出身,对一些二进制代码即本地代码了解不深,所以有几个问题感到很困惑,所以希望懂相关知识的人帮我顺一顺。
VS默认是将文本本件(包括cs文件)以utf-8编码方案编码成字节的,举个例子
我们AaBb经过utf-8编码后是E6 88 91 E4 BB AC 41 61 42 62
E6 88 91(代表我) E4 BB AC(代表们) 41(A) 61(a) 42(B) 62(b)
[color=red]第一个问题:[/color]我是不是可以认为将这些16进制转换成2进制后就是 我们AaBb 在计算机的存储方式? 如下
11100110 10001000 10010001(代表我) 11100100 10111011 10101100(代表们) 1000001(A) 1100001(b) 1000010(B) 1100010(b)
如果换成是utf-16编码的 Little_Edian方式(每个字符占2个字节) 就是
11 62(代表我) EC 4E(代表们) 41 00(A) 61 00(a) 42 00(B) 62 00(b)
既然说到了2进制,我就想起了本地代码,从开始学语言的时候就看到各种各样的人说机器语言是01010这种2进制云云...
那么对于C# java先看一下下面
源代码 C#,java
↓
托管代码 .NET:IL(中间语言) JAVA:字节码等
↓
非托管代码(本地代码,二进制代码,机器语言)http://baike.baidu.com/view/2418160.htm
首先看源代码,如果我们只是保存它们,当然就是像上面那样用某种编码方式将其保存成字节
[color=red]第2个问题:[/color]如果我们对源代码进行了编译,使其变成了托管代码,windows下的托管代码叫做可移植执行体,那么这些托管代码肯定也是以2进制形式存储在硬盘里,那么这时的我们编译得来2进制形式与我们直接保存得来的2进制形式的区别在哪里?
[color=red]第3个问题:[/color]当将托管代码编译成本地代码后,啊哈,这就是人们常说的本地2进制代码,这些本地2进制代码与之前的托管2进制代码的区别在哪里? 我知道后者要依赖CLR或jvm,但除此之外呢?
看了上面的提问,感觉我要问的好像是编译的得到的2进制代码与编码得到的2进制代码有什么区别,然后是编译源代码得到的2进制代码与编译托管代码得到的2进制代码有什么区别。
[color=red]第4个问题:[/color]既然编码字符需要考虑编码方案的问题,那么图片视频呢? 就拿.net中socket传输字符串来讲也是需要考虑编码方案的,为什么传输图片就不需要考虑编码呢? 图片不是也有jpg gif等好多格式吗?