将charArray转换为byteArray

本文关键字:byteArray 转换 charArray | 更新日期: 2023-09-27 17:51:11

我有一个在任何情况下都满足([a-zA-Z0-9])*的字符串,我想让它通过sha1。

那么我如何将字符串(或使用ToCharArray()获得的字符数组)转换为字节数组?

到目前为止,我发现的所有答案都有一大堆评论,为什么从字符串到字节数组的转换是邪恶的,他们提供了字符编码教程的链接,并包括一堆字符编码,使代码膨胀。

在我的情况下,转换应该是LINQ联机程序,安全和整洁。

我试着:

sha.ComputeHash(validator.ToCharArray().ToArray<byte>())

和我在我的LINQ知识范围内玩了一下:

sha.ComputeHash(validator.ToCharArray().ToArray<byte>(c => (byte)c))

将charArray转换为byteArray

validator.Select(c => (byte)c).ToArray()

也可以。"string"类型支持"IEnumerable",所以你可以直接使用LINQ。

"Select"方法允许你指定一个lambda来定制你的输出。这将取代您试图用"ToArray(c => (byte)c))"做的事情。

Encoding.GetEncoding("UTF-8").GetBytes(chararray);

对于您的目的来说,编码是不必要的,尽管它可能更方便。

你可以这样做,

sha.ComputeHash(validator.SelectMany(BitConverter.GetBytes).ToArray());

我喜欢这个版本:

 System.Text.Encoding.UTF8.GetBytes(chararray);

与上文大致相同