Python 和 C 之间的编码差异

问题描述 投票:0回答:1

我试图将Python中获得的一些数据保存到一个可以使用C读取的二进制文件中。问题是Python和C中的字符串编码不同,这在读取文件时造成了不必要的混乱。

使用Python创建文件:

from array import array

string = "test"
text_array = array('u', list(string))

output_file = open('test_file.bin', 'wb')
text_array.tofile(output_file)
output_file.close()

使用 C: 读取同一文件

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

int main()
{
    FILE *file_pointer = fopen("test_file.bin", "rb");
    char *symbol;
    fread(symbol, sizeof(char), 16, file_pointer);
    char * text = (char * ) malloc( 4 * sizeof(char) );
    for(int j = 0; j < 4; j++) text[j] = symbol[4 * j];
    printf("%s \n", text);
    fclose(file_pointer);
    return 0;
}

理想情况下,我想使用 Python 以 4 个字节而不是 16 个字节的方式保存文本“test”,这样用于读取的 C 代码会更干净。

我尝试过在Python中将Unicode转换为ANSII,但不清楚如何进一步进行编写。

python string binary encode
1个回答
0
投票

这似乎会生成一个 4 字节文件。我还没有编译 c 版本来测试它,但你可以尝试将此作为快速修复,看看它是否有帮助。

string = "test"
with open('test_file.bin', 'wb') as output_file:
    output_file.write(string.encode())
© www.soinside.com 2019 - 2024. All rights reserved.