簡體   English   中英

c#中將字符串轉換為字節數組

[英]Convert a string into a byte array in c#

我有一根繩子,

string Var="11001100" 

我想將其轉換為字節數組。

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 格式獲取數據。 我不想那樣。

bArray = Encoding.Default.GetBytes(var);

我建議使用Linq

using System.Linq;

...

string Var = "11001100";

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

測試:

Console.WriteLine(string.Join(Environment.NewLine, bArray
  .Select((value, index) => $"bArray[{index}]=0x{value:X2};")));

結果:

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 格式獲取數據。 我不想那樣。

然后你需要字符的字符串表示。 您可以使用ToString方法獲取它。 這將是簡單地使用反向 for 循環的舊 scool 方式:

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++;
}

這是我對您的問題的解決方案:

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;
}

編輯:忘了倒置。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM