conts
バイナリ ファイルの内容を含む変数があります ( rb
as モードで読み取ります)。スライスを介して文字列の一部を取得しようとすると、変数の適切な長さ (および明らかに内容も) が表示されることが期待されますが、そうではありません。
これを再現できるコードを次に示します。ここで何が起こっているのかわかりません。
hdr1, hdr2 = conts[0:6], conts[10:7]
print "----------------"
print len(conts)
print len(hdr1)
print len(hdr2)
print len(conts)
print "----------------"
print type(hdr1)
print type(hdr2)
print type(conts)
ただし、出力は次のとおりです。
----------------
32174321
6
0
32174321
----------------
<type 'str'>
<type 'str'>
<type 'str'>
何が起きてる?スライスするとスライスごとに新しい文字列が作成されると思いましたか?
Python バージョン:2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]
注:スライス間の 4 バイトのギャップは意図的なものです。問題は、十分なデータがあるにもかかわらず、2 番目のスライスが長さ 0 の文字列を返すことです。(スライスするとき)ピースが隣接している必要があるというドキュメントは見つかりませんでした。
編集:私のエラーを認識した後:17バイトより長い文字列からバイト0〜6とバイト10〜17を取得するつもりでした。