私はprint
いくつかの0xff
バイトを使用して、Python 3.5.2を使用して別のプログラムにパイプします。私はstdin
から読み込み、六角の各文字を出力する簡単なCプログラムを持っている: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++]));
}
私は私のプログラムに0xff
バイトとパイプそれをエコーした場合、予想通り、文字が(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
私の質問:
- なぜPythonのプリント
0xc3
と0xb3
バイトの代わり0xff
していますか? 0xff
をPythonで印刷する適切な方法は何ですか(私はechoまたはPerlと同じ結果を得たいですか?)道の
は '、sys.stdout.buffer.writeをありがとう(b "\ xff \ xff \ xff \ xff")は完全に動作します – Daew
脇に:誤った先頭の 'ffffff'-sを避けるために、' unsigned char * buffer'として 'buffer'を宣言します。 – duskwuff
@duskwuff:提案してくれてありがとう、私はPythonの 'print'の出力が何であるかを示すためにこのコードを含めました、それは実際に私が使用するコードではありません – Daew