好问题
Good  Question
  • 首 页
  • 问题
    • PHP
    • JAVA
    • CPlusPlus
    • C#
    • SQL
  • 关 于
  • 联 系
在C#中怎么样不用手动指定编码就能得到字符串一连串的比特表示形式。 关闭 返回上一级  

在C#中怎么样不用手动指定编码就能得到字符串一连串的比特表示形式。
+ 查看更多

发布日期:2018-02-26 17:21
分类:C#
浏览次数:199
在C#中我怎么样才能无需手动指定一个特定的编码就可以将一个字符串转换为字节数组。
我打算加密一条字符串。虽然我不转换就能加密它。可我还是想知道为什么编码会在这里运行。只是给了我所说的字符。
还有,为什么要考虑编码?我不能简单地得到字符串所存储的位置的字符吗?为什么会有对字符编码的依赖?

回答

正如你所提到的,你的目标是,简单地“获取字符串存储位置的字节”。与这里的答案相反,如果不需要解释字节,就不必担心编码问题!(当然,能够从字节重新构造字符串)。
为了实现这个目标,我真的不明白为什么人们一直告诉你你需要去编码。你完全不需要担心要去编码。
只用做下面这个:
static byte[] GetBytes(string str)
{
    byte[] bytes = new byte[str.Length * sizeof(char)];
    System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
    return bytes;
}

static string GetString(byte[] bytes)
{
    char[] chars = new char[bytes.Length / sizeof(char)];
    System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
    return new string(chars);
}
只要你的程序(或其他程序)不试图以某种方式解释字节,而且你也没有提到你打算这么做,那么这个方法是不会出错的!你担心编码只会让你的过得更复杂却没有什么真正的原因。
这种方法的额外好处:
如果字符串包含无效字符,也没有关系,因为您仍然可以得到数据并重建原始字符串!
它将的编码和解码相同,因为你只是看着字节。
如果您使用了特定的编码,虽然它会给您带来麻烦,编码/解码无效字符。
上一篇在C#中如何将int转换为枚举?
在C#中如何计算某人的年龄?下一篇
下一篇在C#中如何计算某人的年龄?

最新文章

  • 函数`__construct`用来干嘛的
    发布日期:2018-03-26
  • 通过访客的IP得到他们的地区
    发布日期:2018-03-26
  • 合并两个PHP对象的最好的方法是什么?
    发布日期:2018-03-26
  • 该如何把一该如何把一个对象转化成数组?
    发布日期:2018-03-26
  • 什么是输出缓冲区?
    发布日期:2018-03-26
  • 在PHP中怎么把用逗号分隔的字符串分隔在一个数组里?
    发布日期:2018-03-26
  • 在PHP中使用foreach循环时查找数组的最后一个元素
    发布日期:2018-03-26
关于好问
收集整理一些有用的问题和回答,造福中国的程序旺和IT喵们!
友情链接
起飞页 
相关信息
版权声明
Copyright © 2016 - 2022  苏州卡达网络科技有限公司 备案号:苏ICP备09008221号