我正在尝试将目标C代码转换为Swift。
"A"
当我快速转换它时,它返回“ UnsafeMutableRawPointer”。我需要UInt8。
library(dplyr)
A_df <- df %>% filter(var1 == "A")
df %>%
filter(var1 != "A") %>%
group_split(var1) %>%
purrr::map_df(. %>% bind_rows(A_df) %>% mutate(strat = paste0(first(var1), "A")))
# var1 var2 var3 var4 strat
# <fct> <dbl> <int> <int> <chr>
# 1 B 2001 5 5 BA
# 2 B 2004 10 10 BA
# 3 B 2007 5 4 BA
# 4 B 2009 9 6 BA
# 5 A 2000 5 9 BA
# 6 A 2003 6 2 BA
# 7 A 2006 9 1 BA
# 8 C 2002 10 5 CA
# 9 C 2005 7 9 CA
#10 C 2008 5 3 CA
#11 A 2000 5 9 CA
#12 A 2003 6 2 CA
#13 A 2006 9 1 CA
我尝试了不同的解决方案,但没有为我工作。谁能告诉我如何解决这个问题。谢谢
“ UnsafeMutableRawPointer”类型的值没有下标
快捷代码。
UInt8* data = calloc(bytesPerRow, height);
目标C代码。
let data = calloc(bytesPerRow, height)! // UnsafeMutableRawPointer
答案 0 :(得分:3)
您需要为可变指针分配类型。在当前状态下,它是指向任何内容的可变指针,但您希望它成为指向UInt8
值的缓冲区的可变指针。
要这样做,只需在数据上调用assumingMemoryBound
:
let data = calloc(bytesPerRow, height)!.assumingMemoryBound(to: UInt8.self)