gpt4 book ai didi

c++ - 改变 s_addr 的第一个字节

转载 作者:搜寻专家 更新时间:2023-10-31 00:15:23 27 4
gpt4 key购买 nike

我想设置一个s_addr 变量的第一个字节,它只是一个unsigned long。这可能吗?如果可能,如何实现?

它不是一个字节数组,所以我不能这样访问它:

struct in_addr addr;
addr.s_addr[0] = 1; // Set this byte to the number 1, or in hex: 0x01

编辑:

事实证明我需要最后一个(即第 4 个)字节而不是第一个字节。但感谢您的帮助,我现在拥有:

*((char *)&addr.s_addr + 3) = 1;

最佳答案

一种丑陋且可能不安全(但仍被广泛使用)的方式是这样的:

*(char *)&addr.s_addr = 42;

如果您知道 addr.s_addr 是一个 unsigned long,并且如果“第一个”字节是指“最低有效”字节,那么您可以使用按位运算符作为更安全的替代方案,例如

addr.s_addr &= ~0xffUL; // clear previous contents of LS byte
addr.s_addr |= 0x01UL; // set LS byte to 1

关于c++ - 改变 s_addr 的第一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19542226/

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