c# - 将字符串转换为字节数组,反之亦然
问题描述
将字符串转换为字节数组然后再改回来有时不会返回相同的字符串:
RandomNumberGenerator gen = new RNGCryptoServiceProvider();
byte[] randomBytes = new byte[32];
gen.GetBytes(randomBytes);
在某些情况下(或除 unicode 之外的任何类型的编码):
randomBytes != Encoding.Unicode.GetBytes(Encoding.Unicode.GetString(randomBytes));
我想知道如何执行此方法并确保获得相同的结果。提前致谢
解决方案
您可能不是在寻找文本编码,而是在寻找序列化格式。文本编码适用于文本。您正在处理的字节是随机字节。
Base64 ( Convert.ToBase64String
) 是否适合您?
您也可以将字节塞入字符 ( new string(myBytes.Select(b => (char)b).ToArray())
)。这将产生容易被其他系统破坏的不可读字符串。可能不是正确的道路。
推荐阅读
- visual-studio-code - 如何在 Visual Studio Code 中编辑 Markdown 的语言配置?
- c - 如何以双精度打印?
- java - 有没有办法在测试之间停止 micronaut 计划的工作?
- php - php 和 mysqli 的注册表单不起作用
- javascript - 下面给出的 api 正在使用本地地址,但在上传到 github 后显示错误
- angularjs - 通过将控制器更改为组件来准备从 AngularJS 迁移到 Angular2+ 的项目
- python - 使用 Python 开发工具包将 Amazon PA API 响应保存到 JSON 文件
- javascript - 如何在 react-native 中优化 Flatlist,同时呈现包含大数据的长列表?
- c - 为什么可以将另一种类型的参数传递给函数?
- java - IntelliJ IDEA 中的 Maven 依赖项“无法解析符号 VectorAssembler”