我的NSString值为,
NSString *str_Value = @"12345FTY642493AF3556K7880D46676F9";
我需要以下格式输出
Byte byte_Value[]={0x12,0x34,0x5F,0xF9,0x64,0x24,0x93,0xAF,0x35,0x56,0xA7,0x88,0x0D,0x46,0x67,0x6F};
如何将NSSTring值转换为Byte [],任何人都可以为此建议解决方案。
答案 0 :(得分:0)
如何将
NSString
值转换为Byte[]
。任何人都可以为此建议解决方案。
目前还不清楚你在问什么。以上建议您只需要Byte[]
类型的值,它与C中的Byte *
相同,同时您还将所需的输出显示为(Objective) - )C代码用数组文字初始化数组。
如果是前者那么你可以:
UTF8String
从NSString
获取C样式字符串。此方法返回char *
。 C函数strlen
将告诉您此C字符串包含许多字符(字节)。
您可以将char *
值转换为Byte *
值 - 它们都是指向字节的指针。
这将为您提供字节数和指向它们的Byte *
指针。您应该复制这些字节,UTF8String
返回的值不引用调用者拥有的内存,它将被系统销毁/重用。您可以使用memcpy
和malloc
等功能执行此操作。
如果是后者,你想要一个包含C样式声明表示的字符串,那么你可以:
UTF8String
从NSString
获取C样式字符串。此方法返回char *
。strlen
将告诉您此C字符串包含许多字符(字节)。char
)(使用循环),并将每个字符格式化为十六进制,并将结果追加到您正在构建的NSMutableString
向上所需的字符串。您可以使用appendFormat:
方法执行此操作,格式%02x
将生成char
值的零填充2位十六进制表示。如果您在编写一些代码后遇到困难,请提出一个新问题,包括您编写的代码,并解释您遇到的问题。有人可能会帮助你。
HTH
答案 1 :(得分:-1)
试试这个可以帮助你的示例代码
NSString * str = @"Hello World";
NSString * hexStr = [NSString stringWithFormat:@"%@",
[NSData dataWithBytes:[str cStringUsingEncoding:NSUTF8StringEncoding]
length:strlen([str cStringUsingEncoding:NSUTF8StringEncoding])]];
for(NSString * toRemove in [NSArray arrayWithObjects:@"<", @">", @" ", nil])
hexStr = [hexStr stringByReplacingOccurrencesOfString:toRemove withString:@""];
NSLog(@"%@", hexStr);
应该提供类似
的输出48656c6c6f20576f726c64
答案 2 :(得分:-2)
在Swift中你可以创建一个扩展名。
extension NSData {
func toHexString() -> String {
var hexString: String = ""
let dataBytes = UnsafePointer<CUnsignedChar>(self.bytes)
for (var i: Int=0; i<self.length; ++i) {
hexString += String(format: "%02X", dataBytes[i])
}
return hexString
}
}
Then you can simply use:
let keyData: NSData = NSData(bytes: [0x00, 0xFF], length: 2)
let hexString = keyData.toHexString()
println("\(hexString)") // Outputs 00FF