Вы можете построить UnsafePointer
из целого, как:Как получить исходный двоичный двоичный паттерн с небезопасного указателя Swift?
let ptr = UnsafePointer<Void>(bitPattern: 123)
Но как вы получите, что число двоичных разрядов (в данном случае 123) назад от указателя?
Зачем вам это нужно?
(Добавлено в ответ на некоторые комментарии, которые предположили, что я не использую указатели правильно.)
Это не то, что вы обычно делаете, и выше указатель на самом деле не указатель на что-нибудь. Если программа разыменовала его, это сработает.
Некоторые API уровня низкого уровня используют void *
для обозначения некоторых произвольных данных. Это версия C общих типов. Например, представьте себе структуру стека данных в C, с API, как
Stack *create_stack();
void stack_push(Stack *stack, void *element);
void *stack_pop(Stack *stack);
Обычно вы бы передавать указатели в куче данных, но позволяет сказать, что вы просто хотите стек 64-разрядных целых чисел, и вы знаете, что указатели на вашей системе - 64 бит. Вы можете хранить целые числа непосредственно в стеке, и избежать выделения кучи ...
Stack *myStack = create_stack();
long elt = 123;
stack_push(myStack, (void*)elt);
...
elt = (long)stack_pop(myStack);
Я имею дело с API, как это, но более сложные (для полигонов тесселяции).