jus*_*mer 3 c# memory casting low-level
来自C的Iirc,您可以按照以下方式发表声明:
char* str = "1234";
int nonStr = *((int*)str);
Run Code Online (Sandbox Code Playgroud)
(我故意将字符串设为4个字符,因此在平均情况下它将具有与整数相同的字节数.)这将取消引用存储的内存,str如果是整数522207554则给出值(如果我进行了转换)对).
有没有办法在C#中做同样的事情?我知道这是一个低级别的内存操作,通常对C#程序员来说是幸福的,我只是在做一个教学练习.
您可以使用不安全的上下文和fixed语句来执行此操作:
static unsafe void Main(string[] args)
{
string str = "1234";
fixed(char* strPtr = str)
{
int* nonStr = (int*)strPtr;
Console.WriteLine(*nonStr);
}
}
Run Code Online (Sandbox Code Playgroud)
版画
3276849
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1033 次 |
| 最近记录: |