c# - 将字符串转换为字符串[],然后将字符串[]转换为字节[]

标签 c# arrays string visual-studio byte

申请详情:

  • 在 Visual Studio 2019 (Windows 10) 下开发
  • 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 编码为 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[32] 中传递我的 string ABONNE,然后在 bytes[] 中传递?

最佳答案

如果您将字符串直接传递给 32 字节数组会怎么样:

string ABONNE = "TEST";
Byte[] ABO = new byte[32];
Encoding.ASCII.GetBytes(ABONNE,0,ABONNE.Length,ABO,0);

两个零都用于 0-index(起始位置)。我还创建了一个 32 字节的空数组,然后用 ABONNE 中的字节填充它。 请注意,如果 Encoding.ASCII.GetBytes(ABONNE).Length 大于 32 字节,您将得到一个异常

关于c# - 将字符串转换为字符串[],然后将字符串[]转换为字节[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56288583/

相关文章:

c# - 在 Gridview 中获取 TemplateFields 的值

c# - 为 Int32 到 Int64 转换生成警告

c# - 限制 HttpClient 请求速率的简单方法

php - 我如何检查 php 中字符串的开头?

c# - HttpClient 和 SOAP (C#)

javascript - 在javascript中使用多维数组渲染二维 map

c - 传递数组第一个元素的地址时,为什么要写&Array[0]而不是Array?

java - 数组错误期望.class

C++ stringstream 返回额外的字符?

c++ - sstream 无法正常工作?