将字母强制转换为整数时,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个元素的数组.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...