Feedback

C# - long in ein byte-Array kopieren

Veröffentlicht von am 20.07.2010
(1 Bewertungen)
Diese Klasse kopiert die Bytes einer long-Variabele in ein byte-Array und gibt dieses zurück.
Muss mit /unsafe kompiliert werden.
namespace longByteConvert
{
    static public class convert
    {
        /// <summary>
        /// Convertiert einen long-Wert zu einem 8-Byte Array
        /// </summary>
        /// <param name="l">Der zu konvertierende long-Wert</param>
        /// <returns>8-Byte Array des long-Wertes</returns>
        public static unsafe byte[] Convert(long l)
        {
            void* tmp = &l;
            byte* b = (byte*)tmp;
            byte[] toRet = new byte[sizeof(long)];

            for (int i = 0; i < sizeof(long); ++i)
            {
                toRet[i] = *b;
                ++b;
            }

            return toRet;
        }
    }
}
Abgelegt unter long, byte, array, kopieren, konvertieren, long in byte.

2 Kommentare zum Snippet

Thomas Söhne schrieb am 21.07.2010:
Wer unsafe nicht mag, kann ja folgende Abwandlung verwenden.

public static byte[] Convert(long l)
{
long mask = 255;
byte[] res = new byte[sizeof(long)];

for (int i = 0; i < sizeof(long); ++i)
{
res[i] = (byte)((l & mask) >> (8 * i));
mask = mask << 8;
}

return res;
}
Spooky schrieb am 21.07.2010:
1. Wenn schon unsafe Code dann kann man auch die Daten mit einer Dereferenzierung schreiben:
byte[] result = new byte[8];
fixed (byte* ptr = result)
*(long*)ptr = l;

2. Gibt es genau diese Implementierung schon im Framework selbst in der System.BitConverter Klasse (siehe GetBytes(long)).
 

Logge dich ein, um hier zu kommentieren!