我使用以下代码将十六进制字符串发送到NSStreamoutput:
uint8_t mirandaroutecommand[] = { 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x30, 0x14 };
NSData *data = [[NSData alloc] initWithBytes:mirandaroutecommand length:sizeof(mirandaroutecommand)];
[hextooloutputStream write:[data bytes] maxLength:[data length]];
这很好但问题是我需要这些十六进制值来自用户界面上的NSTextfields。我试图将NSTextfield数据转换为整数但不起作用。有没有办法使用几个NSTextfields的数据来构建一个使用十六进制值的整数数组?
我试图找到一个现有主题,但我没有运气。
答案 0 :(得分:0)
NSString
方法integerValue
和intValue
假定为十进制表示并忽略和尾随gumph - 因此将它们应用于@"0x01"
,他们看到0
后跟他们忽略了一些gumph(x01
)。
要阅读十六进制值,请使用NSScanner
的{{1}}(或scanHexInt:
):
scanHexLongLong:
unsigned scannedHexValue;
if ([[NSScanner scannerWithString:textFieldContents] scanHexInt:&scannedHexValue])
{
// value found
...
}
比仅解析单个值更强大,因此如果您愿意,可以使用适当的方法调用扫描以逗号分隔的十六进制值列表。