Per*_*val 2 c pointers endianness swift
我正在尝试翻译此代码段:
ntohs(*(UInt16*)VALUE) / 4.0
Run Code Online (Sandbox Code Playgroud)
和其他一些看起来相似的,从C到斯威夫特.问题是,我对Swift知之甚少,我无法理解这个片段的作用......以下是我所知道的全部内容:
ntohs 交换字节序以主持字节序VALUE 是一个 char[32](UInt(data.0) << 6) + (UInt(data.1) >> 2)做同样的事情.可以解释一下吗?Uint(UInt64)谢谢 !
VALUE是一个指向32个字节(char[32])的指针.UInt16指针.这意味着前两个字节VALUE被解释为UInt16(2个字节).*将取消引用指针.我们得到两个字节VALUE作为16位数.但是它有net endianness(净字节顺序),所以我们不能对它进行整数运算.4.0.要在Swift中执行相同的操作,我们只需将字节值组合为整数即可.
let host = (UInt(data.0) << 8) | UInt(data.1)
Run Code Online (Sandbox Code Playgroud)
请注意,要除以,4.0必须将整数转换为Float.
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |