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

4
好的,在有人试图将其标记为重复之前,我不是要求将字符串转换为字节数组。我想要一个字符串数组,其中包含类似于这样的内容:{"5","168","188","28","29","155"} 转换为字节数组。我已经搜索过了,只能找到将字符串转换为字节数组的方法,这与我的需求相当不同。谢谢。
编辑:该数组将预设,以便通过byte.Parse解析每个成员,因此这不是问题。

1
请提供一个更具体的例子。你是什么意思? - SLaks
请参考有关序列化的这个答案:https://dev59.com/cXM_5IYBdhLWcg3wRw91 - Ryan Bennett
1
你有一个字符串数组吗,比如 new string[] {"5","168","188"} 或者包含了数组语法的字符串,比如 "[5,168,188]" - Guffa
你是否想将字符串字面值“[5,168,188,28,29,155]”转换为等效的 new byte[] {5, 168, 188, 28, 29, 155} - James
4
你仍然可以编辑你的问题并澄清它。 - Oded
显示剩余5条评论
4个回答

12

对于任何无法byte.Parse解析的内容,此方法将失败。

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

对我很有用,我正在以字节形式调试我的API响应,所以我将字节记录到文本编辑器中,并尝试重建响应字节。 - Pranesh Janarthanan

6

您需要将每个字符串解析成一个字节并放入新的数组中。您只需循环遍历所有项并将每个字符串转换即可:

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方法来实现此功能:
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();

2

假设您的意思是您有一个字符串数组,例如 string[] myArray = {"5","168",...};:

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

或者:

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

2

试试这个

使用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);  
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接