我有一个字符串,在任何情况下都满足([a-zA-Z0-9])*,我想让它通过sha1.
那么如何将字符串(或使用ToCharArray()获得的char数组)转换为字节数组?
到目前为止,我发现的所有答案都有很多注释,为什么从字符串到字节数组的转换是邪恶的,它们提供了字符编码教程的链接,并包含了一堆膨胀代码的字符编码.
在我的情况下,转换应该是一个LINQ oneliner,安全和整洁.
我试过了:
sha.ComputeHash(validator.ToCharArray().ToArray<byte>())
Run Code Online (Sandbox Code Playgroud)
就我的LINQ知识而言,我玩了很多:
sha.ComputeHash(validator.ToCharArray().ToArray<byte>(c => (byte)c))
Run Code Online (Sandbox Code Playgroud)
Kon*_*tin 14
Encoding.GetEncoding("UTF-8").GetBytes(chararray);
Run Code Online (Sandbox Code Playgroud)
小智 11
validator.Select(c => (byte)c).ToArray()
Run Code Online (Sandbox Code Playgroud)
也会工作."string"类型支持"IEnumerable",因此您可以直接使用LINQ.
"选择"方法允许您指定lambda来自定义输出.这取代了你试图用"ToArray(c =>(byte)c))"做的事情.
我喜欢这个版本:
System.Text.Encoding.UTF8.GetBytes(chararray);
Run Code Online (Sandbox Code Playgroud)
或多或少与上面相同
为了您的目的,虽然更方便,但也不需要编码。
你可以代替
sha.ComputeHash(validator.SelectMany(BitConverter.GetBytes).ToArray());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20121 次 |
| 最近记录: |