将 4 字节 IP 地址转换为标准点分十进制表示法

发布于 2024-09-30 22:38:58 字数 280 浏览 0 评论 0原文

如果我有一个 4 字节地址存储在 char address[4] 中,内容是:

address[0] = '\x80';
address[1] = '\xAB';
address[2] = '\x0A';
address[3] = '\x1C';

// all together: 80 AB 0A 1C

我想将其转换为一个看起来像“128.171.10.28”的字符数组,因为十六进制的 80 是 128,十六进制的 AB 是 171 和很快。

我该怎么做?

If I have a 4 byte address stored in char address[4] and the contents are:

address[0] = '\x80';
address[1] = '\xAB';
address[2] = '\x0A';
address[3] = '\x1C';

// all together: 80 AB 0A 1C

I want to convert it to a character array that looks like "128.171.10.28", since 80 in hex is 128, AB in hex is 171 and so on.

How can I do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜无邪 2024-10-07 22:38:58
char saddr[16];
sprintf(saddr, "%d.%d.%d.%d", (unsigned char)address[0], (unsigned char)address[1], (unsigned char)address[2], (unsigned char)address[3]);

char saddr[16];
unsigned char *addr = (unsigned char*)address;

sprintf(saddr, "%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]);

或,正如 dreamlax 所指出的:

char saddr[16];
sprintf(saddr, "%hhu.%hhu.%hhu.%hhu", address[0], address[1], address[2], address[3]);
char saddr[16];
sprintf(saddr, "%d.%d.%d.%d", (unsigned char)address[0], (unsigned char)address[1], (unsigned char)address[2], (unsigned char)address[3]);

or

char saddr[16];
unsigned char *addr = (unsigned char*)address;

sprintf(saddr, "%d.%d.%d.%d", addr[0], addr[1], addr[2], addr[3]);

or, as pointed out by dreamlax:

char saddr[16];
sprintf(saddr, "%hhu.%hhu.%hhu.%hhu", address[0], address[1], address[2], address[3]);
晚风撩人 2024-10-07 22:38:58

IP 地址只是打印为十进制的各个八位字节,并以 .

  printf("%d.%d.%d.%d",address[0],address[1],address[2],address[3]);

您可能应该将 char address[4] 设为 unsigned char address[4]

An IP address ist just the individual octets printed as decimal separated by a .

  printf("%d.%d.%d.%d",address[0],address[1],address[2],address[3]);

You probably should make your char address[4] an unsigned char address[4]

提笔落墨 2024-10-07 22:38:58

使用 %u 会更好。

Using %u would be even better.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文