Python中的十六进制

1 投票
4 回答
606 浏览
提问于 2025-04-15 20:08

我不太懂Python,现在正在把一个库移植到C#。我遇到了一些代码行,这些代码在某些输入输出操作中使用,但我不太明白它们的意思。我猜这可能是十六进制的,但我不知道为什么它会放在一个字符串里,也不明白反斜杠的作用是什么。

    sep1 = '\x04H\xfe\x13' # record separator
    sep2 = '\x00\xdd\x01\x0fT\x02\x00\x00\x01'  # record separator

4 个回答

0

正如其他人所说,这里提到的转义字符其实是无法用美国ASCII字符来表示的。那么,为什么还要这样做呢?

因为某些输入输出设备需要一串特殊的字节,这些字节用十六进制值表示,出于某种原因。

有些编程语言没有直接支持字节这种类型,这就带来了问题。我们怎么能写出并发送一串字节,如果我们不能把它们放在一个变量里呢?

在C语言中,使用字符和字符的字符串来存储这些字节。所以你看到的其实并不是真正的字符串。可以把它想象成一串字节(存储在一个字符串里)。

这个“字符串”可以像普通字符串一样使用,也就是说,它可以像其他字符一样发送到输入输出设备,通常使用相同的函数(比如写入、放置、打印等)。

5

它们是转义序列。在Python中,\xNN出现在一个(非原始)字符串里时,会被当作字符0xNN来处理。

0

反斜杠是转义字符。它们可以让你在字符串里插入一些特殊字符,比如说引号。像 \xNN 这样的写法是十六进制的,就像你说的那样。

我觉得他们把字符串当成数组来用。我不太明白为什么会这样做……不过也没关系。

我对C#不太熟悉,但在C语言里,sep1类似于 char[] {0x04H, 0xfe, 0x13}(如果是以空字符结尾的字符串,还需要在最后加一个0)。

撰写回答