gpt4 book ai didi

swift - 使用 Swift 从 NSTextfield 到 (const unsigned char *)

转载 作者:行者123 更新时间:2023-11-30 12:33:20 31 4
gpt4 key购买 nike

如何在 C 程序中从 Swift 中的 NSTextField 正确接收 (const unsigned char *) ?

情况1:

let string1 = atextfield!.stringValue // -> "Test"
print(string1) // -> "Test"

string1/_core/_baseAddress = nil//在调试中

let string2 = string1.utf8CString.withUnsafeBytes
{
ptr -> UnsafePointer<UInt8> in
return ptr.load(as: UnsafePointer<UInt8>.self)
}

fatal error :UnsafeRawBufferPointer.load 越界

情况2:

let string1 = "Test"
print(string1) // -> "Test"

string1/_core/_baseAddress = (_rawValue = 0x..."Test")//调试中

fatal error :UnsafeRawBufferPointer.load 越界

情况3:

let string1 = atextfield!.stringValue // Value = "Test"
print(string1) // -> "Test"

string1/_core/_baseAddress = nil//在调试中

let string2 :UnsafePointer<UInt8> = string1.utf8CString.withUnsafeBufferPointer {
($0.baseAddress!.withMemoryRebound(to: UnsafePointer<UInt8>.self, capacity: string1.lengthOfBytes(using: .utf8)) {$0})}.pointee

testCPgm(string2)

testcfield = testCPgm 中的“”

void testCPgm(const unsigned char *testcfield)
{

}

案例 4:

let string1 = "Test"
print(string1) // -> "Test"

string1/_core/_baseAddress = (_rawValue = 0x..."Test")//调试中

testcfield = testCPgm 中的“”

案例 5 --> 它有效!

let string1 = "Test"

or

let string1 = atextfield!.stringValue
print(string1) // -> "Test"

testCPgm(string1) // Yes directly from String to (const unsigned char *)

testcfield = testCPgm 中的“测试”

谢谢各位的解答

最佳答案

这是我在没有关闭的情况下发现的。

从字符串(string1)到(const unsigned char *)(string2)

let string2 = UnsafeRawPointer(string1.cString(using: .utf8)).bindMemory(to: CUnsignedChar.self, capacity: string1.lengthOfBytes(using: .utf8))

不知道是否有更优雅的方法。

我没有找到 Data 的等效项(没有闭包)(不是 NSData (使用 .bytes))

关于swift - 使用 Swift 从 NSTextfield 到 (const unsigned char *),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43179992/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com