我想print
一些0xff
字節使用Python 3.5.2管他們到另一個程序。我有一個簡單的C程序,它從stdin
讀取並打印在十六進制每個字符:如果我回聲0xff
字節和管到我的節目如何在Python中打印0xff字節?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main() {
char *buffer = malloc(0x100);
fgets(buffer, 0x100, stdin);
for (int i = 0; buffer[i] != 0; printf("%x ", buffer[i++]));
}
,被顯示字符爲預期的(a
是因爲新行的):
# echo -e "\xff\xff\xff\xff" | ./print-chars
ffffffff ffffffff ffffffff ffffffff a
我也可以用Perl做到這一點:
# perl -e 'print "\xff\xff\xff\xff"' | ./print-chars
ffffffff ffffffff ffffffff ffffffff
但是,當我嘗試在Python中,結果是不同的:
# python -c 'print("\xff\xff\xff\xff")' | ./print-chars
ffffffc3 ffffffbf ffffffc3 ffffffbf ffffffc3 ffffffbf ffffffc3 fffffbf a
我的問題:
- 爲什麼蟒紋
0xc3
和0xb3
字節而不是0xff
? - 使用Python打印
0xff
的正確方法是什麼?(我想獲得與echo或Perl相同的結果)?
謝謝'sys.stdout.buffer.write (b「\ xff \ xff \ xff \ xff」)'完美地工作 – Daew
另外:聲明'buffer'爲'unsigned char * buffer'以避免錯誤的前導'ffffff'-s。 – duskwuff
@duskwuff:謝謝你的建議,我只包含了這段代碼來演示Python的'print'輸出是什麼,它不是我在任何地方使用的實際代碼 – Daew