【问题标题】:How to convert the output of a printf to a char?如何将 printf 的输出转换为 char?
【发布时间】:2020-01-24 18:20:33
【问题描述】:

我正在尝试将 printf 的输出转换为之后仅获取一个 char 数组。

 my_printf("%02x:%02x:%02x:%02x:%02x:%02x", gnetif.hwaddr[0],gnetif.hwaddr[1],gnetif.hwaddr[2],gnetif.hwaddr[3],gnetif.hwaddr[4],gnetif.hwaddr[5]);

您可以在此处查看 putty 的输出:Result of output

我想将其转换为字符,然后使用 STM32 中的 sendto() 到我的计算机。例如,我有一个 python 脚本,我在其中发送“MAC”,它会回答我“Mac 地址”。

sendto(sock,/*Mycharwithmacaddress here*/,2,0,&from,fromlen);

如何轻松地将 my_printf 的输出转换为仅获取一个包含我的 mac 地址的 char 数组?

【问题讨论】:

  • 不要认为我在按照您的要求进行操作,但 char 只是一个字节(很可能是 8 位)......所以如果您有更多数据要发送,您将需要的不仅仅是char
  • 不清楚你在问什么......也许你需要snprintf
  • 那……根本不是你使用snprintf()的方式。
  • @PierreP 为什么要将 MAC 转换为 char[] 字符串,而不是直接以原始二进制形式发送 MAC? sendto(sock, &gnetif.hwaddr, 6, 0, &from, fromlen);

标签: c sockets networking udp


【解决方案1】:

我相信您正在寻找snprintf,它类似于printf,只是输出存储在数组中而不是打印出来。 snprintf 会这样使用:

snprintf(char_array, size_of_char_array, “text to print to array such as the MAC address”);

这是一个最小的例子:

#include <stdio.h>

void myfunc(char[]);

int main(void)
{
    char arr[100] = {0};
    snprintf(arr, 100, "%02x:%02x:...", 12, 35);
    myfunc(arr);
}

void myfunc(char arr[])
{
    puts(arr);
}

Try it online!

【讨论】:

    猜你喜欢
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多