对于不是从0开始的缓冲区,GetBytes是否有一种不太痛苦的方法?

Ear*_*rlz 4 c# bytearray bitconverter

我不得不处理项目中的原始字节,我需要基本上做这样的事情

byte[] ToBytes(){
  byte[] buffer=new byte[somelength];
  byte[] tmp;
  tmp=BitConverter.GetBytes(SomeShort);
  buffer[0]=tmp[0];
  buffer[1]=tmp[1];
  tmp=BitConverter.GetBytes(SomeOtherShort);
  buffer[2]=tmp[0];
  buffer[3]=tmp[1];
}
Run Code Online (Sandbox Code Playgroud)

我觉得这是错的,但我找不到更好的办法.有没有更简单的方法?

Han*_*ant 6

BinaryWriter效率很高:

    byte[] ToBytes() {
        var ms = new MemoryStream(somelength);
        var bw = new BinaryWriter(ms);
        bw.Write(SomeShort);
        bw.Write(SomeOtherShort);
        return ms.ToArray();
    }
Run Code Online (Sandbox Code Playgroud)