在swift中将NSString转换为Unsigned Short

时间:2015-02-05 11:35:37

标签: ios objective-c c swift nsstring

我有NSString" 3265"我必须将其发送到' .c'中的功能方法。 file有一个参数unsigned short

这里是我的代码..

.c档案

bool checkData(unsigned short num) {

}

.swift档案

var number: NSString! = "3265"

我需要发送' 0x3265'到checkData功能。

如何将3265NSString)转换为0x3265unsigned short

3 个答案:

答案 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