微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将字母强制转换为整数时,C#会做什么?

我们必须为外部接口实现加密.接口的所有者提供了有关如何在我们这方面进行相同加密的文档.但是,此文档在C#中,并且我们在PHP中工作.

我们理解的大多数部分,除了它们似乎将散列类型转换为整数.他们的代码为:

// 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];
}

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

C#还会强制转换为int 0还是可能转换为char?

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

在字符串中强制转换一个很长的“数字”时,C#是否还会创建一个较短的int?

解决方法:

您要将char转换为int.字符是UTF-16代码单元-无符号的16位整数(范围是[0,65535]).您得到的值基本上会扩展为32位有符号整数.因此,例如,“ A”以65结尾,而欧元符号(U 20AC)则以8364(0x20ac)结尾.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐