看一下以下 C# 代码(从http://wmsauth.org/examplesBuildProtectedURLWithValidity
中的函数中提取的函数):
byte[] StringToBytesToBeHashed(string to_be_hashed) {
byte[] to_be_hashed_byte_array = new byte[to_be_hashed.Length];
int i = 0;
foreach (char cur_char in to_be_hashed)
{
to_be_hashed_byte_array[i++] = (byte)cur_char;
}
return to_be_hashed_byte_array;
}
我的问题是:从 byte 到 char 的转换在编码方面有什么作用?
我想它在编码方面确实没有做任何事情,但这是否意味着 Encoding.Default 是使用的那个,因此返回的字节将取决于框架将如何编码特定操作系统中的底层字符串?
此外,char 实际上是否大于一个字节(我猜是 2 个字节)并且实际上会省略第一个字节?
我正在考虑通过以下方式替换所有这些:
Encoding.UTF8.GetBytes(stringToBeHashed)
你怎么看?