将charArray转换为byteArray

Ale*_*der 13 c# linq

我有一个字符串,在任何情况下都满足([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)

  • `Encoding.UTF8` ;-) (9认同)

小智 11

validator.Select(c => (byte)c).ToArray()
Run Code Online (Sandbox Code Playgroud)

也会工作."string"类型支持"IEnumerable",因此您可以直接使用LINQ.

"选择"方法允许您指定lambda来自定义输出.这取代了你试图用"ToArray(c =>(byte)c))"做的事情.


Ste*_*zer 8

我喜欢这个版本:

 System.Text.Encoding.UTF8.GetBytes(chararray);
Run Code Online (Sandbox Code Playgroud)

或多或少与上面相同


Jod*_*ell 6

为了您的目的,虽然更方便,但也不需要编码。

你可以代替

sha.ComputeHash(validator.SelectMany(BitConverter.GetBytes).ToArray());
Run Code Online (Sandbox Code Playgroud)