可以添加带字节的字符串

本文关键字:字符串 字节 添加 | 更新日期: 2023-09-27 18:29:12

如何追加字符串和字节数组?

String array="$MT!BOOTLOADER";  
Byte[] hexdecimal={0x01,0x05,0x0036};

可以添加带字节的字符串

你可能想做一些低级的事情,所以最终你不需要string,而是需要byte[],所以:

string array="$MT!BOOTLOADER";  
byte[] hexdecimal={0x01,0x05,0x36};
byte[] bytesOrig = Encoding.ASCII.GetBytes(array);
byte[] bytesFinal = bytesOrig;
Array.Resize(ref bytesFinal, bytesFinal.Length + hexdecimal.Length);
Array.Copy(hexdecimal, 0, bytesFinal, bytesOrig.Length, hexdecimal.Length);
// bytesFinal contains all the bytes

我使用Encoding.ASCII是因为您的签名是ASCII(通常签名ASCII)

等效代码,但略有不同(我们通过对Encoding.ASCII方法进行两次调用,预先分配大小合适的数组)

string array="$MT!BOOTLOADER";  
byte[] hexdecimal={0x01,0x05,0x36};
int count = Encoding.ASCII.GetByteCount(array);
byte[] bytes = new byte[count + hexdecimal.Length];
Encoding.ASCII.GetBytes(array, 0, array.Length, bytes, 0);
Array.Copy(hexdecimal, 0, bytes, count, hexdecimal.Length);
// bytes contains all the bytes

使用此函数转换string to bytebyte to string

static byte[] GetBytes(string str)
{
  byte[] bytes = new byte[str.Length * sizeof(char)];
  System.Buffer.BlockCopy(str.ToCharArray(), 0, bytes, 0, bytes.Length);
  return bytes;
}
static string GetString(byte[] bytes)
{
  char[] chars = new char[bytes.Length / sizeof(char)];
  System.Buffer.BlockCopy(bytes, 0, chars, 0, bytes.Length);
  return new string(chars);
}