- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
int main()
{
uint8_t var = 9;
var = ntohs(var);
printf("var=%u",var)
}
这段代码在 Little Endian 中产生 var 值为 0,但在 Big Endian 中 9 成为可能的答案。
据我猜测,因为我们无法在 1 字节字段上应用 ntohs!我们可以吗?有没有案例?
我的linux机器是Little Endian,x86架构,Intel
感谢您的提前答复。
最佳答案
在小端机器上,0 是预期输出。在大端机器上,它将输出 9。
当值为 0x09 的 var
传递给 ntohs
时,它首先会提升为 uint16_t
,这是参数,因此该参数的值为 0x0009。转换后,该函数以 uint16_t
类型返回值 0x0900。
然后将该值分配给 uint8_t
,但值 0x0900 超出范围。然后,本质上仅使用该值的最低位字节(即 0)将其转换为较小的值。
如果您在大端机器上运行相同的代码,则 ntohs
函数基本上不执行任何操作,并返回与给定值相同的值,在本例中为 9。
关于ntohs() 可以应用于 uint8_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51543643/
int main() { uint8_t var = 9; var = ntohs(var); printf("var=%u",var) } 这段代码在 Little End
这个程序应该从离线转储文件中捕获一个数据包并对其进行解码。在这里我遇到了 ntohs() 函数的问题(它接近尾声,标题描述在开头)。为什么它不起作用?操作系统 win7 x86,VS 2010 exp
我有一个.cpp 文件:htonstest.cpp。我使用 g++ 编译它: $ g++ -o test htonstest.cpp 它有效,程序 ./test 也有效。 但是,当我使用 automa
我有一个程序一直依赖于 native::io::net::{htons, ntohs} 但现在在 Could not find 'io' in 'packet: :native'。变化似乎发生在上周的
我正在从 DNS 服务器获取一些数据,我正在尝试将某个部分转换为无符号整数(代表刷新间隔、到期时间等)。通过转换,我的意思是从大端到小端。问题是 ntohs 只放置了 2 个字节的数据而不是 4 个字
当我从 stringstream 读取数据时,我有一个关于如何使用 ntohs() 的问题。 对于下面的代码: read(ns, buf_receive, BUFFER_SIZE); stringst
我正在编写一个 ELF 分析器,但我在正确转换字节顺序时遇到了一些问题。我具有确定分析器的字节序和目标文件的字节序的函数。 基本上,有四种可能的情况: 在大端目标文件上运行的大端编译分析器 无需转换
我从一个答案中阅读了文档: ntohs 函数采用 TCP/IP 网络字节顺序(AF_INET 或 AF_INET6 地址族)的 16 位数字,并以主机字节顺序返回一个 16 位数字。 请举例说明,什么
要从另一台大端机器转换字节数组,我们可以使用: long long convert(unsigned char data[]) { long long res; res = 0; for(
我们正在将 C 语言的遗留代码重写为 C++。在我们系统的核心,我们有一个连接到 master 的 TCP 客户端。主人将不断地流式传输消息。每个套接字读取都会产生 N 条格式为 {type, siz
C# 中是否有网络到主机的转换函数?谷歌搜索并没有找到太多。 :P 最佳答案 IPAddress.HostToNetworkOrder和 IPAddress.NetworkToHostOrder ?
为什么Coverity会产生警告 > "cc" clobber ignored 对于下面提到的代码中的函数调用 htons() 和 ntohs()? lSocketAddr.sin_port = ht
我需要在可能位于不同平台的服务器和客户端之间发送一个枚举缓冲区。 但是枚举的大小取决于平台,我应该调用哪个函数? (htons() 或 htonl()),例如以下枚举: typedef enum f_
我不确定为什么 htons 和 ntohs 都存在于标准库中。他们做的事情完全一样——除非我有点困惑! htonl 和 ntohl 也是如此。 最佳答案 它们提供自文档化代码,告诉读者数据是按主机顺序
我正在使用现有代码,它通过 TCP 连接传递数据 - union ibv_gid 而不转换字节顺序。里面有注释:“gid会逐字节传输,所以不需要做”hton“。代码是正确的,可以工作,但我不明白为什么
我正在为一个不是 hton 数据的协议(protocol)编写一个 Wireshark 解析器插件,我需要在不进行任何字节序转换的情况下提取 64 位数据值。 Wireshark 库中是否有不执行 n
我正在尝试将整数值写入/从 C 套接字读取。有时 ntohs() 会返回非常大的值,例如 55000 、 32000 等...尽管客户端始终发送值 1500 ) { **printf
我对何时使用 ntohs 和 ntohl 感到很困惑。我知道何时将 ntohs 用于 uint16_t 和 ntohl uint32_t。但是那些具有 unsigned int 或指定了特定位数的那些
我是 C 网络编程的新手,我首先尝试将从键盘读取的数组发送到服务器。问题是,每当我从键盘读取数组的长度时,它都会增加 2/3,并且不再做任何正确的事情。例如: 我给出的长度或数组:2客户端将从键盘读取
这是一个 SSCCE ,显示了我的代码的简化版本,它仍然做了一些有用的事情: //Compile with -O3 -Wsign-conversion #include #include void
我是一名优秀的程序员,十分优秀!