Я хочу изменить результат моей программы с шестнадцатеричного на десятичный. Может ли кто-нибудь помочь мне? - PullRequest
0 голосов
/ 19 апреля 2019

Я прочитал файл bmp и получил HexDecimal Result, и теперь я хочу изменить Может ли кто-нибудь помочь мне получить результат только до десятичного числа?

Я использовал эти коды, поэтому я получаю HEXDECIMAL результат:

private void ChosseBtn_Click(object sender, EventArgs e)
{
    using (OpenFileDialog dlg = new OpenFileDialog())
    {
        dlg.Title = "Open Image";
        dlg.Filter = "bmp files (*.bmp)|*.bmp";

        if (dlg.ShowDialog() == DialogResult.OK)
        {
            var colorCodes = this.GetColorCodes(dlg.FileName);
            var str = string.Join(Environment.NewLine,
            colorCodes.Select<int[], string>(line => string.Join(" ", line.Select<int, string>(code => string.Format("{0:X8}", code))))); // string.Format("{0:X6}", code & 0x00FFFFFF) if you want RRGGBB format
            textBox1.Text = str; // requires textBox1.Multiline = true, better have monospaced font
        }
    }
}
private int[][] GetColorCodes(string path)
{
    var bitmap = new Bitmap(path);
    return Enumerable.Range(0, bitmap.Height)
                     .Select<int, int[]>(y => Enumerable.Range(0, bitmap.Width)
                     .Select<int, int>(x => bitmap.GetPixel(x, y).ToArgb()).ToArray()).ToArray();
}

Я получил результат в текстовом поле, как FF ИЛИ 00 НО мне нужен десятичный как 0 ДЛЯ белого цвета ИЛИ 255 Для черного цвета ..

1 Ответ

1 голос
/ 19 апреля 2019

Вы, вероятно, скопировали этот код откуда-то и не знали, как адаптировать его для своих нужд.

Строка, которую нужно изменить, это строка:

colorCodes.Select<int[], string>(line => string.Join(" ", line.Select<int, string>(code => string.Format("{0:X8}", code)))));

string.Format("{0:X8}", code) форматирует целые числа в шестнадцатеричные. Если вам не нужен гекс, просто сделайте ToString:

colorCodes.Select<int[], string>(line => string.Join(" ", line.Select(x => x.ToString()))));
...