using System; using System.Text; namespace Nikse.SubtitleEdit.Core.VobSub { public static class Helper { #region Binary constants public const int B00000000 = 0; public const int B00000001 = 1; public const int B00000010 = 2; public const int B00000011 = 3; public const int B00000100 = 4; public const int B00000101 = 5; public const int B00000110 = 6; public const int B00000111 = 7; public const int B00001000 = 8; public const int B00001001 = 9; public const int B00001010 = 10; public const int B00001011 = 11; public const int B00001100 = 12; public const int B00001101 = 13; public const int B00001110 = 14; public const int B00001111 = 15; public const int B00010000 = 16; public const int B00010001 = 17; public const int B00010010 = 18; public const int B00010011 = 19; public const int B00010100 = 20; public const int B00010101 = 21; public const int B00010110 = 22; public const int B00010111 = 23; public const int B00011000 = 24; public const int B00011001 = 25; public const int B00011010 = 26; public const int B00011011 = 27; public const int B00011100 = 28; public const int B00011101 = 29; public const int B00011110 = 30; public const int B00011111 = 31; public const int B00100000 = 32; public const int B00100001 = 33; public const int B00100010 = 34; public const int B00100011 = 35; public const int B00100100 = 36; public const int B00100101 = 37; public const int B00100110 = 38; public const int B00100111 = 39; public const int B00101000 = 40; public const int B00101001 = 41; public const int B00101010 = 42; public const int B00101011 = 43; public const int B00101100 = 44; public const int B00101101 = 45; public const int B00101110 = 46; public const int B00101111 = 47; public const int B00110000 = 48; public const int B00110001 = 49; public const int B00110010 = 50; public const int B00110011 = 51; public const int B00110100 = 52; public const int B00110101 = 53; public const int B00110110 = 54; public const int B00110111 = 55; public const int B00111000 = 56; public const int B00111001 = 57; public const int B00111010 = 58; public const int B00111011 = 59; public const int B00111100 = 60; public const int B00111101 = 61; public const int B00111110 = 62; public const int B00111111 = 63; public const int B01000000 = 64; public const int B01000001 = 65; public const int B01000010 = 66; public const int B01000011 = 67; public const int B01000100 = 68; public const int B01000101 = 69; public const int B01000110 = 70; public const int B01000111 = 71; public const int B01001000 = 72; public const int B01001001 = 73; public const int B01001010 = 74; public const int B01001011 = 75; public const int B01001100 = 76; public const int B01001101 = 77; public const int B01001110 = 78; public const int B01001111 = 79; public const int B01010000 = 80; public const int B01010001 = 81; public const int B01010010 = 82; public const int B01010011 = 83; public const int B01010100 = 84; public const int B01010101 = 85; public const int B01010110 = 86; public const int B01010111 = 87; public const int B01011000 = 88; public const int B01011001 = 89; public const int B01011010 = 90; public const int B01011011 = 91; public const int B01011100 = 92; public const int B01011101 = 93; public const int B01011110 = 94; public const int B01011111 = 95; public const int B01100000 = 96; public const int B01100001 = 97; public const int B01100010 = 98; public const int B01100011 = 99; public const int B01100100 = 100; public const int B01100101 = 101; public const int B01100110 = 102; public const int B01100111 = 103; public const int B01101000 = 104; public const int B01101001 = 105; public const int B01101010 = 106; public const int B01101011 = 107; public const int B01101100 = 108; public const int B01101101 = 109; public const int B01101110 = 110; public const int B01101111 = 111; public const int B01110000 = 112; public const int B01110001 = 113; public const int B01110010 = 114; public const int B01110011 = 115; public const int B01110100 = 116; public const int B01110101 = 117; public const int B01110110 = 118; public const int B01110111 = 119; public const int B01111000 = 120; public const int B01111001 = 121; public const int B01111010 = 122; public const int B01111011 = 123; public const int B01111100 = 124; public const int B01111101 = 125; public const int B01111110 = 126; public const int B01111111 = 127; public const int B10000000 = 128; public const int B10000001 = 129; public const int B10000010 = 130; public const int B10000011 = 131; public const int B10000100 = 132; public const int B10000101 = 133; public const int B10000110 = 134; public const int B10000111 = 135; public const int B10001000 = 136; public const int B10001001 = 137; public const int B10001010 = 138; public const int B10001011 = 139; public const int B10001100 = 140; public const int B10001101 = 141; public const int B10001110 = 142; public const int B10001111 = 143; public const int B10010000 = 144; public const int B10010001 = 145; public const int B10010010 = 146; public const int B10010011 = 147; public const int B10010100 = 148; public const int B10010101 = 149; public const int B10010110 = 150; public const int B10010111 = 151; public const int B10011000 = 152; public const int B10011001 = 153; public const int B10011010 = 154; public const int B10011011 = 155; public const int B10011100 = 156; public const int B10011101 = 157; public const int B10011110 = 158; public const int B10011111 = 159; public const int B10100000 = 160; public const int B10100001 = 161; public const int B10100010 = 162; public const int B10100011 = 163; public const int B10100100 = 164; public const int B10100101 = 165; public const int B10100110 = 166; public const int B10100111 = 167; public const int B10101000 = 168; public const int B10101001 = 169; public const int B10101010 = 170; public const int B10101011 = 171; public const int B10101100 = 172; public const int B10101101 = 173; public const int B10101110 = 174; public const int B10101111 = 175; public const int B10110000 = 176; public const int B10110001 = 177; public const int B10110010 = 178; public const int B10110011 = 179; public const int B10110100 = 180; public const int B10110101 = 181; public const int B10110110 = 182; public const int B10110111 = 183; public const int B10111000 = 184; public const int B10111001 = 185; public const int B10111010 = 186; public const int B10111011 = 187; public const int B10111100 = 188; public const int B10111101 = 189; public const int B10111110 = 190; public const int B10111111 = 191; public const int B11000000 = 192; public const int B11000001 = 193; public const int B11000010 = 194; public const int B11000011 = 195; public const int B11000100 = 196; public const int B11000101 = 197; public const int B11000110 = 198; public const int B11000111 = 199; public const int B11001000 = 200; public const int B11001001 = 201; public const int B11001010 = 202; public const int B11001011 = 203; public const int B11001100 = 204; public const int B11001101 = 205; public const int B11001110 = 206; public const int B11001111 = 207; public const int B11010000 = 208; public const int B11010001 = 209; public const int B11010010 = 210; public const int B11010011 = 211; public const int B11010100 = 212; public const int B11010101 = 213; public const int B11010110 = 214; public const int B11010111 = 215; public const int B11011000 = 216; public const int B11011001 = 217; public const int B11011010 = 218; public const int B11011011 = 219; public const int B11011100 = 220; public const int B11011101 = 221; public const int B11011110 = 222; public const int B11011111 = 223; public const int B11100000 = 224; public const int B11100001 = 225; public const int B11100010 = 226; public const int B11100011 = 227; public const int B11100100 = 228; public const int B11100101 = 229; public const int B11100110 = 230; public const int B11100111 = 231; public const int B11101000 = 232; public const int B11101001 = 233; public const int B11101010 = 234; public const int B11101011 = 235; public const int B11101100 = 236; public const int B11101101 = 237; public const int B11101110 = 238; public const int B11101111 = 239; public const int B11110000 = 240; public const int B11110001 = 241; public const int B11110010 = 242; public const int B11110011 = 243; public const int B11110100 = 244; public const int B11110101 = 245; public const int B11110110 = 246; public const int B11110111 = 247; public const int B11111000 = 248; public const int B11111001 = 249; public const int B11111010 = 250; public const int B11111011 = 251; public const int B11111100 = 252; public const int B11111101 = 253; public const int B11111110 = 254; public const int B11111111 = 255; #endregion Binary constants public static string IntToHex(UInt64 value, int digits) { return value.ToString("X").PadLeft(digits, '0'); } public static string IntToHex(int value, int digits) { return value.ToString("X").PadLeft(digits, '0'); } public static string IntToBin(long value, int digits) { return Convert.ToString(value, 2).PadLeft(digits, '0'); } public static UInt32 GetEndian(byte[] buffer, int index, int count) { UInt32 result = 0; for (int i = 0; i < count; i++) result = (result << 8) + buffer[index + i]; return result; } /// /// Get two bytes word stored in endian order /// /// Byte array /// Index in byte array /// Word as int public static int GetEndianWord(byte[] buffer, int index) { if (index + 1 < buffer.Length) return (buffer[index] << 8) + buffer[index + 1]; return 0; } public static int GetLittleEndian32(byte[] buffer, int index) { return (buffer[index + 3] << 24 | (int)buffer[index + 2] << 16 | (int)buffer[index + 1] << 8 | (int)buffer[index + 0]); } public static string GetBinaryString(byte[] buffer, int index, int count) { var sb = new StringBuilder(); for (int i = 0; i < count; i++) sb.Append(Convert.ToString(buffer[index + i], 2).PadLeft(8, '0')); return sb.ToString(); } public static UInt64 GetUInt32FromBinaryString(string binaryValue) { return Convert.ToUInt32(binaryValue, 2); } } }