在C中将Float转换为字符串,然后在Python中读取它

2024-04-23 17:55:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我在C中将一个浮点变量转换为字符串,并在Linux中使用命名管道将其发送到Python。问题是我在Python端读取乱码字符和实际值。你知道吗

C代码将浮点转换为字符串

char str[64];

sprintf(str, "%f\n", angle);
write(fd_fifo, str, sizeof(str));

读取接收值并在终端上打印的Python代码

#!/usr/bin/python

import os
import errno
import time

FIFO = '/tmp/bldc_fifo'

try:
    os.mkfifo(FIFO)
except OSError as oe: 
    if oe.errno != errno.EEXIST:
        raise

print("Opening FIFO...")
with open(FIFO, encoding='utf-8', errors='ignore') as fifo:
    print("FIFO opened")
    while True:
        time.sleep(0.1)
        data = fifo.read()
        print(data)

在终端打印中,我看到如下内容:

4\W`U7z3\ENU11.415311号

我期望看到的地方:

11.415311美元


Tags: 字符串代码import终端datatimeosas
1条回答
网友
1楼 · 发布于 2024-04-23 17:55:35

strlen()代替sizeof

char foo[99] = "the quick fox";
sizeof foo; /* 99 */
strlen(foo); /* 13 */

在代码中,错误出现在对write()的调用中

//write(fd_fifo, str, sizeof(str));
write(fd_fifo, str, strlen(str));

相关问题 更多 >