我有一个 PHP
脚本,我已手动将其转换为 C#
。 hexSalt
和 hexFull
变量的输出打印相同,但变量 data
的输出不同。我发现在将 int
变量转换为 char
时问题仍然存在。这些有什么不同?
我已经尝试在 C#
中转换它们并以多种方式转换它们,例如:
Char.ConvertFromUtf32(int)
, Convert.ToChar(int)
, (char)int
但它们显示的是相同的不完整 C#
输出。
C#
string data = "";
string saltFull = "";
string hexFull = "";
char[] saltChars = salt.ToCharArray();
for (int i = 0; i < (salt.Length / 2); i++)
{
string hexSalt = saltChars[i * 2].ToString() + saltChars[(i * 2) + 1].ToString();
saltFull += hexSalt;
int hex = int.Parse(hexSalt, NumberStyles.HexNumber);
hexFull += hex.ToString();
char chr = (char)hex;
data += chr;
}
Response.Write(saltFull + "<br />"); // Same output
Response.Write(hexFull + "<br />"); // Same output
Response.Write(data); // Almost the same output...
// Output of variable data, the converted int to char.
// ¸:}P/C{_ëóCZÔfPüY£Y,Ö]·î~9ªuJb®éI[p¢?0ZÖµz²ð4
PHP
$data = "";
$saltFull = "";
$hexFull = "";
for ($i = 0; $i < strlen($salt) / 2; $i++) {
$hexSalt = $salt[$i * 2] . $salt[($i * 2) + 1];
$saltFull .= $hexSalt;
$hex = hexdec($hexSalt);
$hexFull .= $hex;
$chr = chr($hex);
$data .= $chr;
}
echo $saltFull . "<br />"; // Same output
echo $hexFull . "<br />"; // Same output
echo $data; // Almost the same output...
// Output of variable data, the converted int to char.
// ¸ˆ:}Pž/CŽ”“{_ëóCZ‹ÔfP€üY£Y,Ö]·î~9ªuJb®éI[p¢?0ZÖµz²ð…4
附加信息:
- 我正在同一个浏览器中测试它
- 我在同一台服务器上运行这两种代码。
- 我无法编辑 PHP 代码
- 我不能换盐
最佳答案
问题解决了!!
byte[] chr = BitConverter.GetBytes(hex);
data += Encoding.Default.GetString(chr);
我将 int
转换为 byte[]
数组,并使用 GetString(byte[])
方法获取字符串。
关于c# - 在 PHP 中将 int 转换为 char 在 C# 中有不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21109791/