Copying data between byte arrays

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Vitaly Zayko

    Copying data between byte arrays

    It's probably simple but I can't find a way how to copy number of bytes
    from one byte array to another? Just like Array.Copy(Sour ceArray,
    SourceIndex, DestArray, DestIndex, Length) does but in my case the
    arrays have different length. Of course I can copy byte by byte but I
    guess there should be a function for such task.
    Thanks!

    --
    Vit Zayko
  • Rainer Queck

    #2
    Re: Copying data between byte arrays

    Hi Vitaly,

    take a look at "Buffer.BlockCo py"

    Rainer


    Comment

    • Kevin Spencer

      #3
      Re: Copying data between byte arrays

      Using the same overload you've specified, it doesn't matter how long each
      array is, as long as "DestArray" is at least "Length" in length, and the
      difference between DestArray.Lengt h and DestIndex is at least as long as
      "Length."

      --
      HTH,

      Kevin Spencer
      Microsoft MVP
      ..Net Developer
      You can lead a fish to a bicycle,
      but you can't make it stink.

      "Vitaly Zayko" <vitaly_at_zayk o_dot_net> wrote in message
      news:uZDFFoy$FH A.4080@TK2MSFTN GP14.phx.gbl...[color=blue]
      > It's probably simple but I can't find a way how to copy number of bytes
      > from one byte array to another? Just like Array.Copy(Sour ceArray,
      > SourceIndex, DestArray, DestIndex, Length) does but in my case the arrays
      > have different length. Of course I can copy byte by byte but I guess there
      > should be a function for such task.
      > Thanks!
      >
      > --
      > Vit Zayko[/color]


      Comment

      • Vitaly Zayko

        #4
        Re: Copying data between byte arrays

        That's it! Thank you Rainer!
        [color=blue]
        > Hi Vitaly,
        >
        > take a look at "Buffer.BlockCo py"
        >
        > Rainer
        >
        >[/color]


        --
        Vit Zayko

        Comment

        • Marc Gravell

          #5
          Re: Copying data between byte arrays

          The length of the arrays should not cause any problems to Array.Copy; e.g.
          the following copies the second 50 bytes of a 100 byte array into (roughly)
          the middle of a 500 byte arraym then prints some of the contents to validate
          this.

          byte[] source = new byte[100];
          for (int i = 0; i < 100; i++)
          source[i] = (byte) i;
          byte[] dest = new byte[500];
          Array.Copy(sour ce, 50, dest, 200, 50); // source array, source
          start-offset, destination array, destination start-offset, items to copy
          for (int i = 195; i < 255; i++)
          Console.WriteLi ne("{0}: {1}", i, dest[i]);

          If you are going to copy the entire source array, source.CopyTo(d est,offset)
          is an easier option - again, it doesn't need the arrays to be the same size,
          as long as there is sufficient space in the destination.

          Did I miss something in your question?

          Marc

          "Vitaly Zayko" <vitaly_at_zayk o_dot_net> wrote in message
          news:uZDFFoy$FH A.4080@TK2MSFTN GP14.phx.gbl...[color=blue]
          > It's probably simple but I can't find a way how to copy number of bytes
          > from one byte array to another? Just like Array.Copy(Sour ceArray,
          > SourceIndex, DestArray, DestIndex, Length) does but in my case the arrays
          > have different length. Of course I can copy byte by byte but I guess there
          > should be a function for such task.
          > Thanks!
          >
          > --
          > Vit Zayko[/color]


          Comment

          • Vitaly Zayko

            #6
            Re: Copying data between byte arrays

            Well, my question wasn't complete, I'm sorry:
            actually source array is string type, and I tried to use
            String.ToCharAr ray(). Destination is byte array. When I tried to use
            Copy I've got ArrayTypeMismat chException. That's why it didn't work
            using Copy and it did using Buffer.BlockCop y.
            Thanks to everyone!
            Vit

            Comment

            • Jon Skeet [C# MVP]

              #7
              Re: Copying data between byte arrays

              <Vitaly Zayko <"vitaly at zayko dot net">> wrote:[color=blue]
              > Well, my question wasn't complete, I'm sorry:
              > actually source array is string type, and I tried to use
              > String.ToCharAr ray(). Destination is byte array. When I tried to use
              > Copy I've got ArrayTypeMismat chException. That's why it didn't work
              > using Copy and it did using Buffer.BlockCop y.[/color]

              Hmm... that sounds like really you want Encoding.GetByt es() for the
              appropriate encoding...

              --
              Jon Skeet - <skeet@pobox.co m>
              http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
              If replying to the group, please do not mail me too

              Comment

              Working...