c# - 无法将字节数组转换为字符串,反之亦然
问题描述
我正在尝试将字节数组转换为字符串,但字节未正确转换为字符串。
byte[] testByte = new byte[]
{
2, 200
};
string string1 = Encoding.ASCII.GetString(testByte);
byte[] byte1 = Encoding.ASCII.GetBytes(string1);
string1 给出的值是 \u0002?并且 byte1 没有被转换回 2 和 200。我尝试使用 UTF8 但这也给出了同样的问题。
我得到了 256 个字符和整数值数组。我需要将这些值作为字符串写在媒体上,然后作为字节读回。我需要转换才能写入和读取字节数据。当整数值大于 127 时,我会遇到问题。
我应该怎么做才能从字符串中获取原始字节值?
解决方案
您似乎正在向后使用编码。文本Encoding
(如 ASCII)用于将任意文本数据转换为编码(即:特殊格式)二进制数据。
(此处应包括一个警告,并非所有编码都支持所有文本字符;例如,ASCII 仅支持代码点 0-128,但这不是所示代码的主要问题)
您似乎想将任意二进制数据视为字符串 - 恰恰相反。任意二进制数据和编码文本数据。没问题:只对一些 N 使用 base-N。十六进制(base-16)可以工作,但 base-64 会更节省空间:
string encoded = Convert.ToBase64String(testByte);
byte[] decoded = Convert.FromBase64String(encoded);
推荐阅读
- maven - 使用 Maven 和 Bitbucket 管道运行单个 JUnit 测试套件
- excel - 我正在尝试创建一个公式来从案例尺寸计算单位尺寸
- elasticsearch - 查询数据时别名切换
- java - Mockito、Java 9 和 java.lang.ClassNotFoundException:sun.reflect.ReflectionFactory
- strapi - Strapi:是否可以跟踪用户修改内容?
- javascript - 如何在提供的组件上实现这种依赖(react-native-pull-to-refresh),尤其是带有 fetchPopularMovies 的部分?
- swift4 - 在 Swift 4 中没有更多上下文属性文本的表达式类型不明确
- java - Android 上客户端凭据流的访问令牌
- node.js - 未找到模块:无法解析 pg/lib 中的“dns”
- java - 使用 Powermockito 模拟最终类的本地对象创建