将二进制文件转换为文本文件

时间:2018-04-20 10:12:03

标签: python-3.x

我使用zedborad,我将一些数据传输到我的电脑上。

    void process_echo_request(void *p)
{
    int sd = (int)p;
    int RECV_BUF_SIZE = 2048;
    char recv_buf[RECV_BUF_SIZE];
    int  n,i,j,nwrote;
    unsigned char my_buffer[4];

    unsigned char  test_value[ROW][COLUMN] = {
       {00, 00, 00, 01} ,
       {40, 00, 00, 01} , /*  initializers for row indexed by 0 */
       {80, 01, 81, 20} , /*  initializers for row indexed by 1 */
       {82, 52, 83, 64}   /*  initializers for row indexed by 2 */
    };

我收到该数据并将其复制到文件中。 文件内容如下所示

\00\00\00(\00\00PQR4S@

如何使用python

将其转换为这样的格式
00 00 00 01 28 00 00 01 50 01 51 14 52 34 53 40

以上数据来自" bless hex editor"

1 个答案:

答案 0 :(得分:0)

>>> bytestring = b'\00\00\00(\00\00PQR4S@'
>>> ' '.join('{:02x}'.format(b) for b in bytestring)
'00 00 00 28 00 00 50 51 52 34 53 40'

说明:

  • 使用for b in bytestring迭代bytestring会将每个字节返回为int个对象:0,0,0,40,...,52,83,64

  • '{:02x}'.format(b)转换字符串中的每个int对象。表示是长度为2的十六进制数字(02x中的“x”)(02x中的“2”),零填充(02x中的“0”)< / p>

  • ' '.join(...)将用空格分隔的各种字符串粘合在一起