将字符串数组转换为字节数组

Posted

技术标签:

【中文标题】将字符串数组转换为字节数组【英文标题】:Converting a string array to a byte array 【发布时间】:2012-07-01 09:10:29 【问题描述】:

好的,在任何人试图将其标记为重复之前,我 不是 要求一个字符串到一个字节数组。我想要一个字符串数组,包含类似这样的内容: "5","168","188","28","29","155" 被转换为字节数组。我已经搜索过,只能找到字符串到字节数组,这是完全不同的。谢谢。

编辑:数组将被预设,以便每个成员都可以通过 byte.Parse 解析,所以这不是问题。

【问题讨论】:

请提供更具体的示例。什么意思? 查看这个关于序列化的答案:***.com/q/1446547/228080 你有一个字符串数组,比如new string[] "5","168","188",还是一个包含类似语法的数组的字符串,比如"[5,168,188]" 如果没有更多的上下文 - 特别是您试图通过这种转换实现的目标,我们真的无能为力。 您仍然可以编辑您的问题并澄清它。 【参考方案1】:

对于任何无法byte.Parse解析的东西都会失败

var str = new[] "5", "168", "188", "28", "29", "155";
var byt = str.Select(byte.Parse).ToArray();

【讨论】:

为我工作,我以字节为单位调试我的 API 响应,所以我将字节记录到 textpad 并尝试重建响应字节。【参考方案2】:

您必须将每个字符串解析为一个字节并放入一个新数组中。您可以遍历项目并转换每个项目:

string[] strings =  "5", "168", "188", "28", "29", "155" ;
byte[] bytes = new byte[strings.length];
for (int i = 0; i < strings.Length; i++) 
  bytes[i] = Byte.Parse(strings[i]);

您也可以为此使用Array.ConvertAll method:

string[] strings =  "5", "168", "188", "28", "29", "155" ;
byte[] bytes = Array.ConvertAll(strings, Byte.Parse);

您也可以使用 LINQ 扩展来做到这一点:

string[] strings =  "5", "168", "188", "28", "29", "155" ;
bytes = strings.Select(Byte.Parse).ToArray();

【讨论】:

【参考方案3】:

假设你的意思是你有一个像string[] myArray = "5","168",...;这样的字符串数组:

myArray.Select(x => byte.Parse(x)).ToArray();

或者:

myArray.Select(byte.Parse).ToArray();

【讨论】:

【参考方案4】:

试试这个

使用 linq

string[] strings = new[]  "1", "2", "3", "4" ;
byte[] byteArray = strings.Select(x =>  byte.Parse(x)).ToArray();

没有 linq

string[] strings =  "1", "2", "3", "4" ;

byte[] bytArr = new byte[strings.Length];

int i = 0;

foreach(String text in strings)

  bytArr[i++] = byte.Parse(text);  

【讨论】:

以上是关于将字符串数组转换为字节数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将字节数组的字符串转换为字节数组

将范围为 -128 到 127 的字节数组转换为字符串数组

将字节数组转换为字符串 spark

如何将字节数组转换为字符串[重复]

将表示 UCHAR 数组的 json 字符串响应转换为字节数组

如何将字符串转换为字节数组? [关闭]