c# - 将字符串转换为字符串[],然后将字符串[]转换为字节[]
问题描述
有关应用程序的详细信息:
- 在 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
. 所以我使用这种方法将我的代码编码string
为bytes[]
:
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[]
?
解决方案
如果您将字符串直接传递给 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 字节,则会出现异常
推荐阅读
- python - 从图像中提取轮廓区域
- generics - Specman - 如何将测试更改为更通用?
- python - 功能:你是在里面打印还是在外面打印
- android - 防止未经授权访问 Restful API
- angular - 从 Web API 返回 base64 字符串以在 angular2 中下载为 pdf 表示打开文件时出错
- node.js - 使用猫鼬收集快递
- list - SAPUI5 sap.m.ListBase.getItems() 返回以前的内容?
- python - 任何人都不能使用 seaborn 的 relplot() 绘图?
- java - 如何在Spring中获取来自HTML的URI值到变量(对应方法有多个链接)
- android - 如何将文件放入应用程序私人文件夹?