Swift 字符串到缓冲区中的字节
Swift String to bytes in a buffer
我有一个 swift 字符串,它只包含 ASCII 字符。我必须将它们放在一个 char* 缓冲区中,然后将其转换为 void* 并反向执行此过程以获得回复的字符串。
示例:
bool query(const void* queryString, byte queryLength, void* replyBuffer, byte bufferLength);
所以,我必须设置两个缓冲区。一个将保存我的查询字符串,另一个是 180 字节大,用于包含回复。
如何设置这两个缓冲区并来回复制字符串?我尝试探索 _bridgeToObjectiveC().utf8String
ans 和 unsafemutablepointer...但我感到迷茫...
这是设置缓冲区并将它们传递给 C 函数的方法:
let queryString = "Query ..."
let queryBuffer = Array(queryString.utf8)
var replyBuffer = Array(repeating: UInt8(0), count: 180)
let result = query(queryBuffer, numericCast(queryBuffer.count), &replyBuffer, numericCast(replyBuffer.count))
queryBuffer
是一个数组,其中包含字符串的 UTF-8 表示形式,
replyBuffer
一个包含指定数量的零字节的数组。
分别用queryBuffer
和&replyBuffer
将数组传递给函数,传递指向元素存储的指针
到 C 函数。
如果结果缓冲区在 return 上填充了以 null 结尾的 C 字符串
然后你可以用
创建一个 Swift 字符串
let resultString = String(cString: replyBuffer)
我有一个 swift 字符串,它只包含 ASCII 字符。我必须将它们放在一个 char* 缓冲区中,然后将其转换为 void* 并反向执行此过程以获得回复的字符串。
示例:
bool query(const void* queryString, byte queryLength, void* replyBuffer, byte bufferLength);
所以,我必须设置两个缓冲区。一个将保存我的查询字符串,另一个是 180 字节大,用于包含回复。
如何设置这两个缓冲区并来回复制字符串?我尝试探索 _bridgeToObjectiveC().utf8String
ans 和 unsafemutablepointer...但我感到迷茫...
这是设置缓冲区并将它们传递给 C 函数的方法:
let queryString = "Query ..."
let queryBuffer = Array(queryString.utf8)
var replyBuffer = Array(repeating: UInt8(0), count: 180)
let result = query(queryBuffer, numericCast(queryBuffer.count), &replyBuffer, numericCast(replyBuffer.count))
queryBuffer
是一个数组,其中包含字符串的 UTF-8 表示形式,
replyBuffer
一个包含指定数量的零字节的数组。
分别用queryBuffer
和&replyBuffer
将数组传递给函数,传递指向元素存储的指针
到 C 函数。
如果结果缓冲区在 return 上填充了以 null 结尾的 C 字符串 然后你可以用
创建一个 Swift 字符串let resultString = String(cString: replyBuffer)