簡體   English   中英

bytes .__ repr__表示形式如何工作?

[英]How does bytes.__repr__ representation work?

bytes是整數的不可變序列,范圍為0 <= x <256。

bytes.__repr__如何工作?

為什么有時使用\\x轉義,而有時卻不使用? 例如bytes([118, 255]) b'v\\xff' bytes([118, 255])顯示為b'v\\xff' ,只有一個\\x 我知道\\x用於傳達超出ascii范圍的值? 這里還有其他事嗎?

我正在尋找有關其工作原理的深入解釋? 甚至可以為我提供這些功能的CPython源代碼。

謝謝

感興趣的代碼似乎是這樣的

if (c == quote || c == '\\')
    *p++ = '\\', *p++ = c;
else if (c == '\t')
    *p++ = '\\', *p++ = 't';
else if (c == '\n')
    *p++ = '\\', *p++ = 'n';
else if (c == '\r')
    *p++ = '\\', *p++ = 'r';
else if (c < ' ' || c >= 0x7f) {
    *p++ = '\\';
    *p++ = 'x';
    *p++ = Py_hexdigits[(c & 0xf0) >> 4];
    *p++ = Py_hexdigits[c & 0xf];
}
else
    *p++ = c;

如果c < ' ' || c >= 0x7f c < ' ' || c >= 0x7f ,使用帶有\\x的轉義序列。 0x7f是127,順便說一句)。 ASCII表上' '之前' '所有字符都是特殊字符。 參見http://www.asciitable.com/ repr將使第一列中的所有內容都轉義。 請注意,反斜杠,引號,換行符,回車符和制表符被視為特殊情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM