gpt4 book ai didi

c - 如何告诉 printf() 从无类型(或字节序列)缓冲区中获取值

转载 作者:太空宇宙 更新时间:2023-11-04 04:57:46 25 4
gpt4 key购买 nike

我有一个原始值缓冲区,比如 void* buffer 或更好的 char* buffer - 原始字节流,例如,从文件中读取。我希望缓冲区中的字节以多种方式表示和显示,例如,作为 float,或在运行时作为 long long。我会要求用户提供所需的格式字符串,例如 %10d,并将格式字符串传递给 printf()。但是,printf() 中没有格式说明符,所以它会期望无类型(或字节流)缓冲区作为第二个参数?

如何告诉 printf() 从缓冲区中获取预期的数据并根据给定的格式字符串显示它?我不喜欢使用 switch-caseif-then 树。

最佳答案

您需要将字节流反序列化为值。 bytes 和 float 都是非文本二进制,但它们之间的转换仍然取决于字节顺序,并且迂腐地说,机器是否具有 IEEE FP 数学。

一旦您将字节正确读入 native 值,只需使用常规范式说明符即可。

如果您确定不需要字节转换,只需将 void* 转换为所需的 float* 或其他任何内容,取消引用指针,然后照常打印.但是,这非常不可移植,并且可能会在错误的机器上崩溃。

关于c - 如何告诉 printf() 从无类型(或字节序列)缓冲区中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3574746/

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