簡體   English   中英

在程序的參數中運行python,以及在期望字符串時如何給出十六進制

[英]running python in an argument of a program & how to give hex when string expected

我遇到了這個命令,想了解它是如何工作的。 program只是用於Mac或Linux的簡單c程序命令。

./program `python -c 'print "\xC8\xCE\xC5\x06"'`

1)有人可以解釋此命令的工作原理嗎?

2)這是在期望字符串時為程序提供十六進制值的唯一方法嗎?

這是一種從bash命令行中評估python表達式的方法。 它與C無關。這里唯一的python代碼是print "\\xC8\\xCE\\xC5\\x06" 其余的是bash代碼。

您可以在bash python -c "print 'Hello World'"嘗試此命令

您也可以閱讀man python以獲得有關python命令行標志的更多信息。

在python字符串中, \\xHH用於將十六進制值轉換為字符。 在這種情況下, u"\\xC8\\xCE\\xC5" == u"ÈÎÅ" 如果您不使用unicode字符串,則輸出將是一些非ASCII字符,該program可能有意義,但無法在常規bash會話中輸入或打印該字符。 program可能不在乎該字符串是否可打印,而只是將其視為二進制數據。

bash中的反引號將首先運行附帶的命令,然后將該字符串用作父作用域中的常規bash表達式。 在bash中執行此操作的另一種方法是:

./program $(python -c "print '\xC8\xCE\xC5\x06'")

要回答您的第二個問題:還有其他方法也可以這樣做。 您可能使用printf而不是python。 像這樣:

 ./program $(printf "\xC8\xCE\xC5\x06")    

暫無
暫無

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

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