バイナリデータがうまく読み込めずに困っています。

バイナリデータ

04725f06799b6081101c0103803e22782e08a5a2574fa2280f5054bfef8081c0810081809500b300

仮にこのデータをdata.binとして保存します。

if __name__ == '__main__':
    fp = open('C:\\data.bin','br')
    data = fp.read()
    print(data)
    fp.close()

元のバイナリデータを1バイトずつ扱いたいのですが、dataの中身は、以下のようになってしまいます。

b'\x04r_\x06y\x9b`\x81\x10\x1c\x01\x03\x80>"x.\x08\xa5\xa2WO\xa2(\x0fPT\xbf\xef\x80\x81\xc0\x81\x00\x81\x80\x95\x00\xb3\x00'

Cで記述した場合、

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a;
    char str1[256];
    FILE *fp;
    errno_t err;

    err = fopen_s(&fp,"C:\\data.bin","r");

    if (err == 0) {
        int cnt = 0;
        while((a = fgetc(fp)) != EOF){
            if (cnt < 256) {
                str1[cnt] = a;
                cnt++;
            }
            putchar(a);
        }
        fclose(fp);
    }

    return 0;
}

str1の内容は、バイトごとに読み取っていけば、もとのバイナリデータを復元できます。
※str1の大きさ256は適当に最大サイズにしていて、初期化をしていないため、代入していない配列には不定のキャラクタが入りますが気にしないでください。

Cのように、バイナリデータを文字データに代入すれば、文字列としては成り立ちませんが、元のデータは扱える・・・このようなことをPythonで実現するにはどうすればよいでしょうか?