我有NSString
" 3265"我必须将其发送到' .c
'中的功能方法。 file有一个参数unsigned short
这里是我的代码..
在.c
档案
bool checkData(unsigned short num) {
}
在.swift
档案
var number: NSString! = "3265"
我需要发送' 0x3265
'到checkData
功能。
如何将3265
(NSString
)转换为0x3265
(unsigned short
)
答案 0 :(得分:0)
这应该有效:
// This number is hex, not decimal (although it looks decimal)
let str = "3265"
// Hence we must parse it as a base-16 number:
let num : CUnsignedShort = CUnsignedShort(strtoul(str, nil, 16))
// Convert it back to hex for printing
println(String(num, radix:16)) // This should produce 3265
strtoul
的调用将字符串转换为数字,将其解释为十六进制。然后你从它做一个CUnsignedShort
,你可以传递给你的C函数。
答案 1 :(得分:0)
val
答案 2 :(得分:-1)
您可以使用NSScanner将NSString
十六进制转换为int
s:
int myVal;
NSScanner *scanner = [NSScanner scannerWithString:number];
[scanner scanHexInt:&myVal];
bool myBool = scanData((unsigned short)myVal);
显然这是客观的,但你应该能够迅速做到这一点。
将myVal设置为-1并在将其发送到>= 0
函数之前检查它是scanData()
可能是个主意,以确保没有发生错误。
请参阅this SO question。