Если я введенный 0xffffffff, то выход должен быть: А: 255 Р: 255 G: 255 Б: 255Преобразование этого значения цветового типа для ARGB
Я не могу найти какие-либо учебники для этого converthing , Благодаря!
Если я введенный 0xffffffff, то выход должен быть: А: 255 Р: 255 G: 255 Б: 255Преобразование этого значения цветового типа для ARGB
Я не могу найти какие-либо учебники для этого converthing , Благодаря!
Вы можете использовать Color
структуру (От узла .NET System.Drawing
) для разбора этого:
using System;
using System.Drawing;
void Main()
{
var c = Color.FromArgb(unchecked((int)0xaa336539));
Console.WriteLine("Alpha: {0}", c.A);
Console.WriteLine("Red: {0}", c.R);
Console.WriteLine("Green: {0}", c.G);
Console.WriteLine("Blue: {0}", c.B);
}
, который производит следующий вывод:
Alpha: 170
Red: 51
Green: 101
Blue: 57
Перемещение и маскировка.
(хотя некоторые предпочитают использовать / 256
для сдвига и % 256
для маски)
unsigned long x = 0xaa336539;
// Note the LSB to MSB order
//mask
unsigned char b = x & 0xff;
//shift
x >>= 8;
//mask
unsigned char g = x & 0xff;
//shift
x >>= 8;
//mask
unsigned char r = x & 0xff;
//shift
x >>= 8;
//mask
unsigned char a = x & 0xff;
// Technically, just saving it into an 8 bit wide container is the same as the masking, although some compilers might warn you
Вы также можете использовать: 'var c = Color.FromArgb (unchecked ((int) 0xaa336539));', а затем просто получить доступ к свойствам R, G, B и A. –
Возможно, лучше использовать этот метод .NET, который @ChrisDunway рекомендует вместо того, чтобы кататься самостоятельно, как и я (но, может быть, мое помогает показать происхождение вещей). Если он ответит, вы должны перенести галочку на него. Ссылка URL https://msdn.microsoft.com/en-us/library/2zys7833(v=vs.110).aspx – infixed
Хм, тег C# прочь ... может быть, это не .NET-вещь больше – infixed
// Original input
var input = "0xaa336539";
// Gets aa336539
var inputRemovePrefix = input.Substring(2);
// Converts to a long
var numberConversion = long.Parse(inputRemovePrefix, System.Globalization.NumberStyles.HexNumber);
// Converts to 6 character hex string so the next operation will always work
var convertedInput = numberConversion.ToString("X6");
var aVal = int.Parse(convertedInput.Substring(0,2), System.Globalization.NumberStyles.HexNumber);
var rVal = int.Parse(convertedInput.Substring(2,2), System.Globalization.NumberStyles.HexNumber);
var gVal = int.Parse(convertedInput.Substring(4,2), System.Globalization.NumberStyles.HexNumber);
var bVal = int.Parse(convertedInput.Substring(6,2), System.Globalization.NumberStyles.HexNumber);
// Prints result
Console.WriteLine($"A: {aVal} R: {rVal} G: {gVal} B: {bVal}");
показать, что вы сделали. введите код в описании. –
Я все еще ничего не делал, потому что не знаю формулы для ее преобразования. Можете ли вы сказать, что это за цвет? "0xaa336539" – Trafalgar
Используйте калькулятор, и вы увидите, что hex '0xaa' преобразует в десятичный' 170', '0x33' =' 51' и т. Д. – Quantic