c/c++和其他语言最大区别在于: 指针
指针就是内存地址,一旦明白了指针与内存地址相关的内容,那理解其他语言,就易如反掌。
而且你可以把其他语言用的更加好,更加有效率
例如java/js/objc中为什么容器中只能存储引用类型?
如果存储基本数据类型(值类型),为什么会发生效率很低的装箱拆箱行为?
而c#为什么就不会呢?
你怎么才能让不使用的内存尽快被垃圾收集器回收过去?
还有很多涉及内存相关的内容,例如堆分配,栈分配等........
根据经验:
本篇目的:
是不是感觉很绕口啊,特难理解吧!
理解大小端的关键点是明白:
很容易理解 高低地址 了吧,就是书写顺序
高低字节是:左高右低
高低地址是:左低右高
根据大端的定义:
数据的高字节 保存在 内存的低地址 中,而 数据的低字节 保存在 内存的高地址 中
则内存存储的方式是:
DC是最高字节[ 最左 ],放在内存的最低地址[ 最左 ]
FF是最低字节[ 最右 ],放在内存的最高地址[ 最右 ]
按照这个规则,很容易知道,大端在内存存储的顺序是:
DC|6E|35|FF(和rgba = 0xDC6E35FF一致的顺序)
根据小端的定义:
数据的高字节 保存在 内存的高地址 中,而 数据的低字节 保存在 内存的低地址 中
则内存存储的方式是:
DC是最高字节[ 最左 ],放在内存的最高地址[ 最右 ]
FF是最低字节[ 最右 ],放在内存的最低地址[ 最左 ]
按照这个规则,很容易知道,小端在内存存储的顺序是:
FF|35|6E|DC(和rgba = 0xDC6E35FF相反的顺序)
先字节后地址:
附:今天老师带队一起写生去 文章我昨天半夜写的
这牵扯一个大小端问题
哪边都能解决
给出C#方案
public static string GetRealHEX(string Q){
byte[] B = Encoding.Unicode.GetBytes(Q)
if (0x24 == BitConverter.GetBytes(0x2124)[0])
{
for (int F = B.Length--F > 0)
{
byte T = B[F]
B[F] = B[F - 1]
B[--F] = T
}
}
return BitConverter.ToString(B).Replace("-", string.Empty)
}