我是C#的新手,所以请光临我。
我有一个文本框,用户可以在其中键入字节;例如,0x01,0x02,0x03。
我希望在此处添加文本框文本;
byte[] offset = new byte[] { **TEXTBOXINPUTHERE** };
Android.SetMemory(0x0248C8FC, offset);
我怎样才能做到这一点?很多例子都是转换文本框输入,这是我不想要的。
感谢您的帮助。
编辑;; 有点难以解释它应该是如此简单...我希望用户向内存地址发送偏移量。因此,如果用户选中该复选框,则会输入具有偏移量的文本框文本。所以而不是
byte[] buffer = new byte[] { 0x60, 0x00, 0x00, 0x00 };
我希望它是
byte[] buffer = new byte[] { textbox1.text };
用户输入的值如“0x01”或“0x01,0x60,0x00,0x00”或任何其他值。
答案 0 :(得分:1)
如果输入始终由前缀为0x
的单字节十六进制值组成,用逗号分隔(即"0x01, 0x02, 0x03"
),那么您可以执行以下操作:
var input = "0x01, 0x02, 0x03";
// no validation whatsoever
var array = input
.Split(',')
.Select(i => i.Trim().Replace("0x", ""))
.Select(i => Convert.ToByte(i, 16))
.ToArray();
或者,稍微不那么严格的版本会拆分不同的分隔符(例如逗号,空格,制表符):
private static byte[] GetByteArrayFromHexString(string input)
{
return input
.Split(new[] { ',',' ','\t' }, StringSplitOptions.RemoveEmptyEntries)
.Select(i => i.Trim().Replace("0x", ""))
.Select(i => Convert.ToByte(i, 16))
.ToArray();
}
这应该适用于多个不同的输入,这样您的用户就不必输入所有不必要的内容:
// all these variants produce the same output
GetByteArrayFromHexString("0x01, 0x02, 0x03") // --> new byte[] { 1, 2, 3 }
GetByteArrayFromHexString("0x01 0x02 0x03") // --> new byte[] { 1, 2, 3 }
GetByteArrayFromHexString("01 02 03") // --> new byte[] { 1, 2, 3 }