C# 将字符串转换为字符串[],然后将字符串[]转换为字节[]
有关申请的详情:C# 将字符串转换为字符串[],然后将字符串[]转换为字节[],c#,arrays,string,visual-studio,byte,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.GetB
- 在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 ABONNE = "TEST";
var ABO = Encoding.ASCII.GetBytes(ABONNE);
但是我有一个问题,这个字符串必须是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
要查找此结果,我如何在字符串[32]
中传递我的字符串ABONNE
,然后在字节[]
中传递?使用StringBuilder
为字符串填充必要数量的空值
StringBuilder sb = new StringBuilder(ABONNE);
sb.Append((char)0,32-ABONNE.Length);
更新了一个工作示例,而不是伪代码。如果您直接将字符串传递到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字节,您将得到一个异常0将产生一个30的六进制代码,对,所以阵列将填充30 instean和0000@xdtTransform这不是字符“0”,而是字符\0。混淆源于伪代码,因为在伪代码中没有像这样接受int的重载。我留下的是0
或(char)0
。我写的是一样的:在这个特殊的重载上var ABO
返回一个int
而不是字节[]
@valentindobois Pivot我用yours@val,一些GetBytes返回byte[]
但是,如果您传入参数字节指针或字节数组,它们必须在其上写入,则返回int
写入的字节数。@XDT转换感谢您的帮助,@ganchito55更改其答案,结果非常理想