为了账号安全,请及时绑定邮箱和手机立即绑定

如何将网络字节转换为int?

如何将网络字节转换为int?

C#
牛魔王的故事 2023-08-20 14:34:03
读取UDP数据包,需要将单个字节转换为序数值(int)。或者一个 4 字节整数值到 int。但我感兴趣的值是 0、1 或 2(有意义的单字节),因此实际上不需要读取所有 4 个字节。private async void Button1_ClickAsync(object sender, EventArgs e){   try   {      using (var TheudpClient = new UdpClient(2237))      {         TheudpClient.Client.SetSocketOption(SocketOptionLevel.Socket,            SocketOptionName.ReuseAddress, true);         var receivedResults = await TheudpClient.ReceiveAsync();         MsgText = Encoding.ASCII.GetString(receivedResults.Buffer);         MsgTypeStr = MsgText.Substring(11,1);         MsgTypeInt = (int)MsgTypeStr; // this line blows up...       //  MsgTypeInt = int.Parse(MsgTypeStr, System.Globalization.NumberStyles.HexNumber);  // this blows up     //  MsgTypeInt = Int32.Parse(MsgTypeStr); // this blows up         richTextBox1.Text = "\nLength: " + MsgText.Length + " Type " + MsgTypeInt.ToString();         richTextBox1.Text = "\nReceived data: " + MsgText;        }     }     catch(Exception ex)     {         richTextBox1.Text += "\nException: " + ex.Message.ToString();     }}错误消息是“输入字符串的格式不正确。”我相信问题是试图将字符串字节转换为整数。在 Delphi 中,使用 Ord 函数很容易。我可能需要从 char 转换为 int。只是不知道如何从字符串中获取字符。我是 C# 新手。感谢您的任何建议。
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

当您将字符串转换为 int 时,它会尝试读取该字符串,就像它是格式化数字一样。但您想要做的是转换字符串中的第一个字节,如下所示:

MsgTypeInt = (int)(MsgText[11]);

注意事项:还没有编译或尝试过这个,也没有研究从 Encoding.ASCII.GetString 返回每个字符有多少字节。


查看完整回答
反对 回复 2023-08-20
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

这是将字节转换为整数的简单方法。


class Example {

public static void main(String args[]) {

    byte b = 100;

    int x;

    x = b; // automatic conversion

    System.out.println(b+" "+x);

    }

}


查看完整回答
反对 回复 2023-08-20
  • 2 回答
  • 0 关注
  • 124 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信