2014-09-25 68 views
0

我想将C逗号分隔的数组文件 写入python列表,并在将数据发送到另一个文件之前对数据执行一些操作 。 关于如何做到这一点,而忽略评论的任何想法?将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..... 
+0

你想要一个C语法分析器吗? – simonzack 2014-09-25 11:33:03

回答

0

使用这样

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

现在,在“数据”一正则表达式组有essentialy这个

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, 

你只需要通过所有的火柴itterate并粘贴在一个字符串

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; 
} 
0

使用正则表达式

(0x\d+), 

捕获全局十六进制数字。

然后

int(hex_num, 16) 

将它们变成整数。