我尝试为Wake on Lan发送UDP包。包的第一部分需要是十六进制代码的6 * FF,然后是十六进制的16 * mac地址。如何以十六进制值发送NSString?现在它将值255发送为32 35 35而不是FF。
我有以下代码:
NSMutableString *messageData= [NSMutableString new];
[messageData appendString: @"255255255255255255"];
for (int i = 0; i <= 16; i++) {
[messageData appendString:(@"%@ ",self.macAddress)];
}
char const *messageDataChar = [messageData UTF8String];
CFDataRef Data = CFDataCreate(NULL, (const UInt8*)messageDataChar, strlen(messageDataChar));
NSData *destAddrData = [NSData dataWithBytes:&addr length:sizeof(addr)];
CFSocketError errorDetails = CFSocketSendData(socket, (__bridge CFDataRef) destAddrData, Data, 0);
Todo:补充广播,而不是发送到IP地址。
Wireshark显示在尝试使用mac地址时发送的以下包数据aa:bb:cc:dd:ee:ff:
0000 32 35 35 32 35 35 32 35 35 32 35 35 32 35 35 32 2552552552552552
0010 35 35 61 61 62 62 63 63 64 64 65 65 66 66 61 61 55aabbccddeeffaa
0020 62 62 63 63 64 64 65 65 66 66 61 61 62 62 63 63 bbccddeeffaabbcc
0030 64 64 65 65 66 66 61 61 62 62 63 63 64 64 65 65 ddeeffaabbccddee
0040 66 66 61 61 62 62 63 63 64 64 65 65 66 66 61 61 ffaabbccddeeffaa
0050 62 62 63 63 64 64 65 65 66 66 61 61 62 62 63 63 bbccddeeffaabbcc
0060 64 64 65 65 66 66 61 61 62 62 63 63 64 64 65 65 ddeeffaabbccddee
0070 66 66 61 61 62 62 63 63 64 64 65 65 66 66 61 61 ffaabbccddeeffaa
0080 62 62 63 63 64 64 65 65 66 66 61 61 62 62 63 63 bbccddeeffaabbcc
0090 64 64 65 65 66 66 61 61 62 62 63 63 64 64 65 65 ddeeffaabbccddee
00a0 66 66 61 61 62 62 63 63 64 64 65 65 66 66 61 61 ffaabbccddeeffaa
00b0 62 62 63 63 64 64 65 65 66 66 61 61 62 62 63 63 bbccddeeffaabbcc
我需要的是以下内容:
0000 ff ff ff ff ff ff aa bb cc dd ee ff aa bb cc dd ................
0010 ee ff aa bb cc dd ee ff aa bb cc dd ee ff aa bb ................
我无法真正找到如何使用目标C中的十六进制值。