using Godot; using System; using System.Collections.Generic; namespace Rokojori { public class Bytes { public static string ConvertToString( ulong numBytes, int basis = 1000 ) { var unitIndex = 0; var units = new List() { "Bytes", "KB", "MB", "GB", "TB" }; double num = numBytes; while ( num >= 1000 && unitIndex < ( units.Count - 1 ) ) { num = num / 1000.0; unitIndex ++; } var fNum = (float) num; return RegexUtility._FFF( fNum ) + " " + units[ unitIndex ]; } public static byte SetBit( byte value, int position ) { return (byte) ( ( 1 << position ) | value ); } public static byte UnsetBit( byte value, int position ) { var mask = 1 << position; var invertedMask = ~mask; return (byte)( value & invertedMask ); } public static bool IsBitSet( byte value, int position ) { var mask = 1 << position; return ( mask & value ) == mask ; } public static List Convert( List floats ) { var list = new List(); floats.ForEach( f => list.AddRange( BitConverter.GetBytes( f ) ) ); return list; } public static List Convert( List ints ) { var list = new List(); ints.ForEach( i => list.AddRange( BitConverter.GetBytes( i ) ) ); return list; } } }