我不知道python而且我正在将一个库移植到C#,我遇到了一些在一些I / O操作中使用的代码行,但我不确定它是什么,我的猜测是这是一个十六进制但我不知道为什么它在一个字符串里面,也不知道反斜杠的作用是什么?
sep1 = '\x04H\xfe\x13' # record separator
sep2 = '\x00\xdd\x01\x0fT\x02\x00\x00\x01' # record separator
答案 0 :(得分:5)
他们是逃脱序列。在Python中,(非原始)字符串中的\xNN
被视为字符0xNN
。
答案 1 :(得分:0)
反斜杠是转义字符。它们允许您在字符串中插入特殊字符(IE引号)。 \ xNN是十六进制的,就像你说的那样。
看起来他们正在使用字符串代替数组。我不确定为什么有人会这样做......但是哦,好吧
我不熟悉C#,但是在C语言中,sep1类似于char[] {0x04H, 0xfe, 0x13}
(如果它是一个以空字符结尾的字符串,则在末尾附加0)
答案 2 :(得分:0)
相同的转义序列适用于大多数语言。你只需要在C#中使用正确的字符串引号,这是双引号(“)。
答案 3 :(得分:0)
正如其他人所说,它的转义字符无法真正表示为US ASCII字符。那你为什么这么做?
由于某种原因,IO设备需要具有这些特殊十六进制值的字节序列。
某些语言不支持字节的本机类型,然后我们遇到了问题。当我们不能将它们放在变量中时,我们如何编写和发送一个字节序列?
语言C使用字符和字符串来代替存储这些字节。所以你拥有的并不是真正的字符串。将其视为字节序列(存储在字符串中)。
“字符串”可以正常使用,即可以像发送任何其他字符一样发送到I / O设备,并且通常具有相同类型的功能(写入,放置,打印,... 。)