| File: BitHelpers.cs | Web Access |
| Project: src\aspnetcore\src\DataProtection\DataProtection\src\Microsoft.AspNetCore.DataProtection.csproj (Microsoft.AspNetCore.DataProtection) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime.CompilerServices; namespace Microsoft.AspNetCore.DataProtection; internal static unsafe class BitHelpers { /// <summary> /// Writes an unsigned 32-bit value to a memory address, big-endian. /// </summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteTo(void* ptr, uint value) { byte* bytePtr = (byte*)ptr; bytePtr[0] = (byte)(value >> 24); bytePtr[1] = (byte)(value >> 16); bytePtr[2] = (byte)(value >> 8); bytePtr[3] = (byte)(value); } /// <summary> /// Writes an unsigned 32-bit value to a memory address, big-endian. /// </summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteTo(ref byte* ptr, uint value) { byte* pTemp = ptr; pTemp[0] = (byte)(value >> 24); pTemp[1] = (byte)(value >> 16); pTemp[2] = (byte)(value >> 8); pTemp[3] = (byte)(value); ptr = &pTemp[4]; } /// <summary> /// Writes a signed 32-bit value to a memory address, big-endian. /// </summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteTo(byte[] buffer, ref int idx, int value) { WriteTo(buffer, ref idx, (uint)value); } /// <summary> /// Writes a signed 32-bit value to a memory address, big-endian. /// </summary> [MethodImpl(MethodImplOptions.AggressiveInlining)] public static void WriteTo(byte[] buffer, ref int idx, uint value) { buffer[idx++] = (byte)(value >> 24); buffer[idx++] = (byte)(value >> 16); buffer[idx++] = (byte)(value >> 8); buffer[idx++] = (byte)(value); } }