gpt4 book ai didi

c# - 在 C# 中指定要移至字符串的字节数

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:40 25 4
gpt4 key购买 nike

这就是我想要做的。我正在从传入的套接字程序中获取字节数据。默认情况下,传入要编码并 append 到我的字符串的字节将为 1500 字节,因为这是我为字节数组定义的大小。我的问题是,我想知道如何传递部分字节数组而不是整个 1500 字节。

IPAddress localAddr = IPAddress.Parse(args[0]);
System.Console.WriteLine("The local IP is {0}", localAddr);
Int32 port = int.Parse(args[1]);
System.Console.WriteLine("The port is {0}", port);
TcpListener myListener = new TcpListener(localAddr, port);
byte[] bytes = new byte[1500];
string sem = "";
do
{
int flag = 0;
int rec = 1;
Console.Write("Waiting");
myListener.Start();
Socket mySocket = myListener.AcceptSocket();
// receiving the hl7 message
StringBuilder sbb = new StringBuilder();
do{
// bytes = null;
rec = mySocket.Receive(bytes,SocketFlags.None);
// rec = mySocket.Receive(bytes);
Console.WriteLine("rec = {0} ",rec);
for (int i=0; i<bytes.Length; i++)
{
if (bytes[i]==0x1C)
{
flag = 1;
}
}
sbb.Append(Encoding.ASCII.GetString(bytes));

}while (flag == 0);

最佳答案

首先,让我们弄清楚显示的代码的作用:

  • 它创建一个空字节数组
  • 它使用编码从这个数组中解码,创建一个新字符串
  • 它将这个字符串传递给一个 StringBuilder

它不做的是“将字节复制到字符串”——尤其是字符串本质上是“char”数据(每个 16 位),而不是字节数据。如果您想将字节数据视为 char 数据,它几乎适用于 UTF-16(取决于字节序),但不适用于 ASCII。

重新选择 append 多少:

  • Encoding.GetString 有一个重载来指定要考虑的字节数据的偏移量和计数
  • StringBuilder.Append 有一个重载来指定要考虑的 char 数据的偏移量和计数

其中一个或两个都可能在这里有用;但是,我认为代码并没有像您认为的那样工作;有更简单的方法来初始化 StringBuilder

关于c# - 在 C# 中指定要移至字符串的字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9521511/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com