我可能会以错误的方式解决这个问题,因为我过去没有做太多的指针运算(甚至可能没有必要)。
但是,给定Swift中的指针(类型为UnsafeMutableRawPointer
),我想得到最接近(向下舍入)页面对齐的地址。这是为了使用msync
基本上,我正在尝试迁移一些Objective C(好吧,基本上是C)代码,如下所示:
int pageSize = getpagesize();
void *address = [some bytes];
size_t pageIndex = (size_t)address / pageSize;
void *pageAlignedAddress = (void *)(pageIndex * pageSize);
到目前为止在Swift中我有类似的东西:
let pageSize: Int = Int(getpagesize())
let bytes: UnsafeMutableRawPointer = [some bytes]
let pageIndex: Int = Int(bytes) / pageSize
let pageAlignedAddress: UnsafeMutableRawPointer = UnsafeMutableRawPointer(pageIndex * pageSize)
显然,我的Swift代码的最后两行不能编译,因为我正在混合类型并使用不存在的初始化器。但我无法看到如何将现有的UnsafeMutableRawPointer
转换为页面对齐,也无法在该类型上看到任何可能对此有帮助的方法。
对于Swift类型来说,这甚至不是必需的,它们总是页面对齐...
答案 0 :(得分:1)
似乎您只需知道初始值设定项<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea name="message" rows=10 cols=80>Enter your text here</textarea>
和Int
。
init(bitPattern: UnsafeMutableRawPointer?)
UnsafeMutableRawPointer
的初始值设定项为Int
,而UnsafeMutableRawPointer?
的初始化值为UnsafeMutableRawPointer
。为什么不使用它们?
Int