将字母强制转换为int时,C#做了什么?

Lod*_*ode 1 php c# casting

我们要为外部接口实现加密.接口的所有者已经提供了如何在我们这边预先形成相同加密的文档.但是,这个文档是在C#中,我们使用PHP.

我们理解的大多数部分除了它们似乎将哈希值转换为int之外.他们的代码如下:

// hashString exists and is a md5 a like string
int[] keyBuffer = new int[hashString.length];
for (int i=0; i<hashString.length; i++) {
    keyBuffer[i] = (int)hashString[i];
}
Run Code Online (Sandbox Code Playgroud)

在PHP中,将字母转换为int时,得到0(int).由于我们无法想象这是第三方意味着什么,我们相信C#会做其他事情.

C#也会转换为int 0,还是可能转换为char?

其次,原始的hashString长320.这意味着代码将创建一个320长的int?在PHP中,你没有像C#那样保留内存的想法.但是当我们尝试将320长字符串强制转换为int时,我们得到一个长度为19'字符的int.

当在字符串中对一个非常长的"数字"进行类型转换时,C#是否也会创建一个更短的int?

Jon*_*eet 10

你正在转换charint.A char是UTF-16代码单元 - 无符号16位整数(范围是[0, 65535]).你得到的值基本上扩展为32位有符号整数.所以'A'最终成为65,例如,并且如8364(0x20ac)欧元符号(U + 20AC)结束.

至于你的第二部分 - 你正在创建一个int,你正在创建一个int 数组.是的,你将创建一个包含320个元素的数组.

  • @Lode:我强烈建议您尝试学习C#*而不使用PHP作为参考.与尝试将每个C#概念映射到PHP概念相比,您最终会更加清晰.特别是,我认为PHP数组与C#数组非常不同. (3认同)