gpt4 book ai didi

c - 将数据从 Host App 发送到 Chrome 扩展

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:17 24 4
gpt4 key购买 nike

下类后,当我激活扩展程序时,我可以运行扩展程序和主机应用程序,但每次我尝试接收数据时,我都无法确定。

这是我的代码:

int main(int argc, char* argv[]) {
char message[] = "{\"t\": \"t\"}";

unsigned int len = strlen(message);
_setmode(_fileno(stdout), _O_BINARY);

printf("%c%c%c%c", (char) 10, (char) 0, (char) 0, (char) 0);

printf("%s", message);

return 0;
}

我做错了什么?

最佳答案

%c 采用 int 参数(intrpretedunsigned char),而不是 char 。这可能/将导致打印错误的数据。此外,strlen 返回一个 size_t。您应该阅读所用函数的手册页。

重要提示:传递二进制值(而非字符)时,您应该使用 uint8_t 或 - 至少使用 unsigned char。请记住,char 可以是有符号的或无符号的,具体取决于实现。这可能会导致算术运算出现意外。

注意:

printf("%c%c%c%c", (char) 10, (char) 0, (char) 0, (char) 0);
printf("%s", message);

可以组合(删除强制转换):

printf("%c%c%c%c%s", 10, 0, 0, 0, message);

如果没有库支持,你应该考虑写一些函数来序列化一些基本类型,比如:

static void print_u32(uint32_t value)
{
for ( size_t n = 0 ; n < 4 ; n-- ) {
putc((unsigned char)value); // still passing an int !
value >>= 8;
}
}

... print_string( ...

print_u32(strlen(message));
print_string(message);

请注意,_setmode 不是标准库函数。经过一番谷歌搜索后,它似乎是 Windows 也支持的 BSD 扩展(以防万一您希望该扩展具有可移植性)。

关于c - 将数据从 Host App 发送到 Chrome 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565232/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com