ios - 通过 UDP 发送 hexString 数据
问题描述
我正在开发一个 iOS 应用程序。我遇到了一个问题。
我正在尝试通过 UDP 将 hexString 数据发送到 wifi 摄像头,该摄像头会在获取正确数据时做出响应。我的代码如下所示。但是我无法从我的 wifi 摄像头得到任何响应。(我正在使用 https://github.com/robbiehanson/CocoaAsyncSocket)
NSString *sendMsg = @"6745000005000000000000000000000000000000000000001400000067450000140000000A";
NSData *bytes = [sendMsg dataUsingEncoding:NSUTF16BigEndianStringEncoding];
NSString *host = @"255.255.255.255";
[self.udpSocket sendData:bytes toHost:host port:ListenPort withTimeout:-1 tag:1];
此外,我尝试通过 PacketSender 发送我的数据(应用程序可以发送 UDP 数据),它具有正确的响应。
解决方案
问题已解决。问题是在将 NSString 转换为 NSData 时。它是需要转换为 NSData 的十六进制字符串。以下是我的有效代码。
- (NSData *)dataFromHexString:(NSString *)hexString {
NSAssert((hexString.length > 0) && (hexString.length % 2 == 0), @"hexString.length mod 2 != 0");
NSMutableData *data = [[NSMutableData alloc] init];
for (NSUInteger i=0; i<hexString.length; i+=2) {
NSRange tempRange = NSMakeRange(i, 2);
NSString *tempStr = [hexString substringWithRange:tempRange];
NSScanner *scanner = [NSScanner scannerWithString:tempStr];
unsigned int tempIntValue;
[scanner scanHexInt:&tempIntValue];
[data appendBytes:&tempIntValue length:1];
}
return data;}
推荐阅读
- tuples - Elixir:如何检查一个元素是否存在于数组中元组的特定索引中?
- r - 仅在一项 GitHub 操作作业上运行 testthat 测试
- html - Excel VBA在填写Web文本框时遇到问题
- html - 如何将 ngx-bootstrap 日期选择器对齐到左上角或左下角
- flutter - 无需在 Dart 中更改即可更改地图
- node.js - 如何使用 jest 统一 npm `request.post`
- php - Laravel 8:更新过程后如何重定向用户
- linux - “猫”是什么意思?Linux 运营商
- python - 一个描述符怎么可能没有 __get__ 和 __set__?
- android - 在视图模型中创建太多可变实时数据时的性能开销