我有一个编码功能,可以创建一个Command, 我假设我的字节字符串输出如(0010010210004443331012011101000)
我需要创建解码函数从这个字节中提取一些数据让我们说从第8位到第12位在提取之后检查如果数组的第一个字节是00或不然后返回我用ASCII提取数据
这是我的Decode
这是完全错误的我的解码
public byte[] Decode(string Resp)
{
string NewResp = Resp;
string SubResp = NewResp.Substring(65, 185);
Console.WriteLine("Substring: {0}", SubResp);
MessageBox.Show(SubResp);
return null;
}
这是Encode
{
return bCommand;
}
答案 0 :(得分:0)
class Program
{
static void Main(string[] args)
{
byte[] encoded =
{
0x01, 0x00, 0x00, 0x24, 0x02, 0x43, 0x31, 0x31, 0x00, 0x00, 0x01, 0x43, 0x49, 0x53, 0x2D,
0x34, 0x36, 0x58, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x11
};
byte[] toCheck = SubArray<byte>(encoded, 8, 5); // start index at 8 and u need till 12th
if (toCheck[0] != '\0')
{
Console.WriteLine(Encoding.ASCII.GetString(toCheck));
}
Console.Read();
}
public static T[] SubArray<T>(T[] data, int index, int length)
{
T[] result = new T[length];
Array.Copy(data, index, result, 0, length);
return result;
}
}
答案 1 :(得分:0)
你有像
这样的十六进制字符串string hexstr= "68696d616e736875";
string subHexstr= hexstr.Substring(2,3); // Lets say index from 3rd byte to 5th byte.
byte[] by=new byte[subHexstr.Length];
int j = 0;
for (int i = 0; i < by.Length; i++)
{
by[i] = byte.Parse(subHexstr.Substring(j, 2), System.Globalization.NumberStyles.HexNumber);
j = j + 2;
}
if(by[0]!=0x00)
{
string asciiStr= Encoding.Ascii.GetString(by);
}