读C逗号分隔hex文件到python

时间:2014-09-25 11:30:09

标签: python regex

我想读一个C逗号分隔的数组文件 进入python列表并进行一些操作 在将数据发送到另一个文件之前的数据。 如何在忽略评论的同时做任何想法?

// Example file data.h
unsigned const short font_5x7[480] = {
    0x00,0x00,0x00,0x00,0x00, //
    0x00,0x00,0xfa,0x00,0x00, // !
    0x00,0xe0,0x00,0xe0,0x00, // "
    0x28,0xfe,0x28,0xfe,0x28, // #
    0x24,0x54,0xfe,0x54,0x48, // $
    0xc4,0xc8,0x10,0x26,0x46, // %
etc.....

3 个答案:

答案 0 :(得分:0)

使用像这样的正则表达式

(?<data>[^/]*?)[ ]*//[^\n]*([\n\r]|())

现在在&#34;数据&#34;小组有必要的这个

0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0xfa,0x00,0x00,
0x00,0xe0,0x00,0xe0,0x00,
0x28,0xfe,0x28,0xfe,0x28,
0x24,0x54,0xfe,0x54,0x48,
0xc4,0xc8,0x10,0x26,0x46,

您只需要遍历所有匹配并将其粘贴到字符串中

答案 1 :(得分:0)

如果您能够访问代码和C编译器,那么编写一个小型C程序以更好的格式输出数据可能更容易:

#include <stdio.h>
#include "data.h"

int main(int argc, char *argv[])
{
  int i;
  for (i=0; i<480; i++)
    printf("%i\n", font_5x7[i]);
  return 0;
}

答案 2 :(得分:0)

使用正则表达式

(0x\d+),

全局捕获十六进制数。

然后

int(hex_num, 16)

将它们变成整数。