首页 > 解决方案 > 将字符串转换为字符串[],然后将字符串[]转换为字节[]

问题描述

有关应用程序的详细信息:

应用程序从远程服务器接收信息。带有套接字的连接用于双方之间的通信。

为了与服务器通信,应用程序必须以字节数组的形式发送数据,以便正确读取数据。

目前我使用这种方法在字节[]中传递我的变量:

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. 所以我使用这种方法将我的代码编码stringbytes[]

string ABONNE = "TEST";
var ABO = Encoding.ASCII.GetBytes(ABONNE);

但是我有一个问题,这string必须是 32 字节,而当我在另一边解码(六进制)时,我发现:

得到的结果: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的 instring[32]然后 in bytes[]

标签: c#arraysstringvisual-studiobyte

解决方案


如果您将字符串直接传递给 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 字节,则会出现异常


推荐阅读