【发布时间】:2012-03-24 01:22:11
【问题描述】:
我有一个尝试通过套接字连接的设备,根据手册,我需要“十六进制 02 的 STX 字符”。
如何使用 C# 做到这一点?
【问题讨论】:
标签: c# character-encoding hex
我有一个尝试通过套接字连接的设备,根据手册,我需要“十六进制 02 的 STX 字符”。
如何使用 C# 做到这一点?
【问题讨论】:
标签: c# character-encoding hex
只是对 GeoffM 的回答的评论(我没有足够的分数来评论正确的方式)。
您不应该仅使用两位数字以这种方式嵌入 STX(或其他字符)。
如果下一个字符(在“\x02”之后)是一个有效的十六进制数字,那么它也会被解析,这将是一团糟。
string s1 = "\x02End";
string s2 = "\x02" + "End";
string s3 = "\x0002End";
这里,s1 等于 ".nd",因为 2E 是点字符,而 s2 和 s3 等于 STX + "End"。
【讨论】:
您可以使用 Unicode 字符转义:\u0002
【讨论】:
将 Integer 值 2 转换为 char:
char cChar = (char)2;
【讨论】:
\x02 是 STX 代码,您可以查看 the ASCII Table
checkFinal = checkFinal.Replace("\x02", "End").ToString().Trim();
【讨论】:
在一个字符串中,显然是Unicode format is best,但对于用作字节,这种方法有效:
byte chrSTX = 0x02; // Start of Text
byte chrETX = 0x03; // End of Text
// etc...
【讨论】:
您可以像这样将 STX 嵌入到字符串中:
byte[] myBytes = System.Text.Encoding.ASCII.GetBytes("\x02Hello, world!");
socket.Send(myBytes);
【讨论】: