有关应用程序的详细信息:
UWP
和C#
语言在XAML
平台上设计应用程序从远程服务器接收信息。带有套接字的连接用于双方之间的通信。
要与服务器通信,应用程序必须以字节数组形式发送数据,以便可以正确读取。
当前,我使用此方法以字节为单位传递变量[]:
var ID_MESSAGE_ARRAY = BitConverter.GetBytes((int)MESSAGE);
var WAY_ARRAY = BitConverter.GetBytes((int)WAY);
var SIZE_ARRAY = BitConverter.GetBytes((int)SIZE);
var TYPE_STATE_DEVICE_ARRAY = BitConverter.GetBytes((int)TYPE_STATE_DEVICE.LOGIN);
var HexString = ID_MESSAGE_ARRAY.Concat(WAY_ARRAY).Concat(SIZE_ARRAY).Concat(TYPE_STATE_DEVICE_ARRAY).Concat(ABO).ToArray();
由于收到此消息,我必须发送string
。因此,我使用此方法将string
编码为bytes[]
:
string ABONNE = "TEST";
var ABO = Encoding.ASCII.GetBytes(ABONNE);
但是我有一个问题,这个string
必须在32个字节上,而当我在另一边解码(hexa)时,我会发现:
获得的结果:54-45-53-54
预期结果:54-45-53-54-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
要找到此结果,如何在string ABONNE
中传递我的string[32]
,然后在bytes[]
中传递
答案 0 :(得分:4)
如果直接将字符串传递到32个字节的数组,该怎么办?
string ABONNE = "TEST";
Byte[] ABO = new byte[32];
Encoding.ASCII.GetBytes(ABONNE,0,ABONNE.Length,ABO,0);
两个零都代表0索引(起始位置)。另外,我还创建了一个32字节的空数组,然后用ABONNE
中的字节填充它。 请注意,如果Encoding.ASCII.GetBytes(ABONNE).Length
大于32字节,则会出现异常
答案 1 :(得分:-1)
使用StringBuilder
在字符串中填充必要的空值。
StringBuilder sb = new StringBuilder(ABONNE);
sb.Append((char)0,32-ABONNE.Length);
更新,是一个有效的示例,而不是伪代码。