如何将网络字节转换为 int?
How to convert network byte to int?
读取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();
}
}
错误消息是 "Input string was not in a correct format."
我认为问题在于尝试将字符串字节转换为 int。在 Delphi 中,使用 Ord 函数很容易。我可能需要将 char 转换为 int。只是不知道如何从字符串中获取字符。
我是 C# 新手。感谢您的任何建议。
当您将字符串转换为 int 时,它会尝试读取字符串,就好像它是格式化数字一样。但是你想要做的是转换字符串中的第一个字节,像这样:
MsgTypeInt = (int)(MsgText[11]);
注意事项:尚未编译或尝试此操作,也未调查从 Encoding.ASCII.GetString 返回每个字符的字节数。
这是将字节转换为整数的简单方法。
class Example {
public static void main(String args[]) {
byte b = 100;
int x;
x = b; // automatic conversion
System.out.println(b+" "+x);
}
}
读取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();
}
}
错误消息是 "Input string was not in a correct format."
我认为问题在于尝试将字符串字节转换为 int。在 Delphi 中,使用 Ord 函数很容易。我可能需要将 char 转换为 int。只是不知道如何从字符串中获取字符。
我是 C# 新手。感谢您的任何建议。
当您将字符串转换为 int 时,它会尝试读取字符串,就好像它是格式化数字一样。但是你想要做的是转换字符串中的第一个字节,像这样:
MsgTypeInt = (int)(MsgText[11]);
注意事项:尚未编译或尝试此操作,也未调查从 Encoding.ASCII.GetString 返回每个字符的字节数。
这是将字节转换为整数的简单方法。
class Example {
public static void main(String args[]) {
byte b = 100;
int x;
x = b; // automatic conversion
System.out.println(b+" "+x);
}
}