如何在不手动指定编码的情况下获得C#中字符串的一致字节表示?

如何在不手动指定特定编码的情况下,将.NET(C#)中的字符串转换为字节[]

我要加密这个字符串。我可以在不转换的情况下对其进行加密,但我仍然想知道为什么在这里使用编码

还有,为什么还要考虑编码呢?我不能简单地获取字符串存储在哪个字节中吗?为什么对字符编码有依赖性

与这里的答案相反,如果不需要解释字节,则无需担心编码问题

正如你提到的,你的目标很简单,就是;获取字符串存储在"中的字节数
(当然,还要能够从字节中重新构造字符串。)

对于这些目标,我真的不理解为什么人们总是告诉你你需要编码。当然,您不必担心这个问题的编码。

只需这样做:

静态字节[]获取字节(字符串str)
{
byte[]bytes=新字节[str.Length*sizeof(char)];
System.Buffer.BlockCopy(str.ToCharArray(),0,bytes,0,bytes.Length);
返回字节;
}
//不要在任意字节上使用;仅在同一系统上的GetBytes输出上使用
静态字符串GetString(字节[]字节)
{
char[]chars=新字符[bytes.Length/sizeof(char)];
System.Buffer.BlockCopy(字节,0,字符,0,字节.长度);
返回新字符串(字符);
}

只要你的程序(或其他程序)没有试图以某种方式解释字节,而你显然没有提到你打算这样做,那么这种方法就没有任何错误!担心编码只会让你的生活变得更加复杂

此方法的其他好处:字符串是否包含无效字符无关紧要,因为您仍然可以获取数据并重建原始字符串

它将被编码和解码,因为您正在查看字节

但是,如果您使用特定的编码,则会给您编码/解码无效字符带来麻烦

发表评论