2010-03-07 114 views
1

我不知道python,我正在將一個庫移植到C#中,我遇到了一些用於某些I/O操作的代碼行,但我不確定它是什麼,我的猜測是它是一個十六進制的,但我不知道它爲什麼在一個字符串裏面,反斜槓怎麼辦?python中的十六進制

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

回答

0

反斜槓是轉義字符。它們允許您在字符串內插入特殊字符(IE爲引號)。 \ xNN是十六進制的,就像你說的那樣。

它看起來像他們正在使用一個字符串代替我的數組。我不太確定爲什麼有人會這麼做...但是不錯哦

我不熟悉C#,但在C中,sep1類似於char[] {0x04H, 0xfe, 0x13}(如果它是空的,則在末尾添加0)終止字符串)

5

它們是轉義序列。在Python中,(非原始)字符串中的\xNN被視爲字符0xNN

+0

謝謝你的回答。 – ryudice 2010-03-07 23:38:47

0

相同的轉義序列適用於大多數語言。你只需要使用正確的字符串引號,在C#中是雙引號(「)。

0

正如其他人所說的那樣,它的轉義字符不能真正表示爲US ASCII字符。然後?

IO設備需要與這些特殊的十六進制值的字節序列的某些原因。

有些語言不支持字節的原始類型,然後我們有一個問題,我們怎麼能寫會當我們不能將它們放在一個變量中時發送一個字節序列?

語言C使用字符a nd字符串來存儲這些字節。所以你有什麼不是一個字符串。把它看作一個字節序列來代替(存儲在一個字符串中)。

「字符串」可以正常使用,也就是說,它可以發送到I/O設備,就像任何其他字符可以發送一樣,並且通常具有相同類型的功能(寫入,放入,打印)。 ..)