如果已解决,请原谅我,但我无法在任何地方找到它。我一直在尝试让单色位图在文本框中可见。当我打开一个黑白位图图像时,我希望能够看到由 1 和 0 组成的图像形式(1 黑色,0 白色)。我想如果我将下面的 int(i) toString 转换为二进制会显示,但我想这并不容易。有人对这个有经验么?希望有一种简单的方法来执行这种功能。
for (int i = 0x7F; i < 0xFF; i++) { __byteLookup[i] = Convert.ToString(i, 2); }
// 0x7F = 127, 0xFF = 255
这是米奇老鼠的照片:
这是 Micky 在二进制文件中的样子:
我希望看到这样的事情发生:
在我的代码中,我将小数 1-126 作为实际字符处理,但我将 127-255 转换为二进制。
目前我正在使用拖放功能,并希望保留这是可能的。这是我当前用于此拖放 RichTextBox 的课程。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PCL_Utility
{
public class DragDropRichTextBox : RichTextBox
{
public DragDropRichTextBox()
{
this.AllowDrop = true;
this.DragDrop += DragDropRichTextBox_DragDrop;
}
public static class BinaryFile
{
private static string[] __byteLookup = new string[256];
static BinaryFile()
{
// Display printable ASCII characters as-is
for (int i = 0x00; i < 0x7F; i++) { __byteLookup[i] = ((char)i).ToString(); }
// Display non-printable ASCII characters as \{byte value}
for (int i = 0; i <= 0x00; i++) { __byteLookup[i] = "\\" + i.ToString(); }
for (int i = 0x7F; i < 0xFF; i++) { __byteLookup[i] = Convert.ToString(i, 2); }
__byteLookup[0] = ""; // NULL
}
public static string ReadString(string filename)
{
byte[] fileBytes = System.IO.File.ReadAllBytes(filename);
return String.Join("", (from i in fileBytes select __byteLookup[i]).ToArray());
}
}
void DragDropRichTextBox_DragDrop(object sender, DragEventArgs e)
{
//string[] fileText = e.Data.GetData(DataFormats.FileDrop) as string[];
string[] fileText = e.Data.GetData(DataFormats.FileDrop) as string[];
if (fileText != null)
{
foreach (string name in fileText)
{
try
{
this.AppendText(BinaryFile.ReadString (name) + "\n -------- End of File -------- \n\n");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
}
}
}
任何帮助将不胜感激。我主要是初学者,所以无论答案如何,我都会尽力理解。但我可能有一些问题。