首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在c#中将字符串转换为字节数组

在c#中将字符串转换为字节数组
EN

Stack Overflow用户
提问于 2017-08-18 16:27:51
回答 3查看 498关注 0票数 0

我有一根线,

代码语言:javascript
复制
string Var="11001100" 

我想把它转换成一个字节数组。

代码语言:javascript
复制
bArray[0]=0x00;
bArray[1]=0x00;
bArray[2]=0x01;
bArray[3]=0x01;
bArray[4]=0x00;
bArray[5]=0x00;
bArray[6]=0x01;
bArray[7]=0x01;

有人能在这方面给我指点一下吗?我尝试了下面的代码,但是我得到了ASCII格式的数据。我不想那样做。

代码语言:javascript
复制
bArray = Encoding.Default.GetBytes(var);
EN

回答 3

Stack Overflow用户

发布于 2017-08-18 16:32:05

我建议使用Linq

代码语言:javascript
复制
using System.Linq;

...

string Var = "11001100";

byte[] bArray = Var
  .Select(item => (byte) (item == '0' ? 1 : 0))
  .ToArray(); 

测试:

代码语言:javascript
复制
Console.WriteLine(string.Join(Environment.NewLine, bArray
  .Select((value, index) => $"bArray[{index}]=0x{value:X2};")));

结果:

代码语言:javascript
复制
bArray[0]=0x00;
bArray[1]=0x00;
bArray[2]=0x01;
bArray[3]=0x01;
bArray[4]=0x00;
bArray[5]=0x00;
bArray[6]=0x01;
bArray[7]=0x01;
票数 6
EN

Stack Overflow用户

发布于 2017-08-18 16:41:02

但是我得到的数据是

的。我不想那样做。

然后,您需要字符的字符串表示。您可以使用ToString方法获取它。这将是旧的scool方式,简单地使用反向的for循环:

代码语言:javascript
复制
string Var="11001100";

byte [] bArray = new byte[Var.Length];

int countForward = 0;
for (int i = Var.Length-1; i >= 0 ; i--)
{
    bArray[countForward] = Convert.ToByte(Var[i].ToString());
    countForward++;
}
票数 1
EN

Stack Overflow用户

发布于 2017-08-18 16:41:08

这是我对你的问题的解决方案:

代码语言:javascript
复制
string value = "11001100";
int numberOfBits = value.Length;
var valueAsByteArray = new byte[numberOfBits];

for (int i = 0; i < numberOfBits; i++)
{
    bytes[i] = ((byte)(value[i] - 0x30)) == 0 ? (byte)1 : (byte)0;
}

编辑:忘记了倒置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45752036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档