ios - 使用socket传输字符串,系统会自动将 NSString 转为 NSData 传输.
PHPz
PHPz 2017-04-17 17:30:49
[iOS讨论组]

本意是想传输一系列16进制的字符串.而NSData类型会将 NSString 转为16进制的 ASCII 码.有什么方法可以直接传输16进制的数据么.

PHPz
PHPz

学习是最好的投资!

全部回复(1)
高洛峰

//编写一个NSData类型数据
+(NSMutableData)HexStringToData:(NSString)str{


NSString *command = str;
command = [command stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableData *commandToSend= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [command length]/2; i++) {
    byte_chars[0] = [command characterAtIndex:i*2];
    byte_chars[1] = [command characterAtIndex:i*2+1];
    whole_byte = strtol(byte_chars, NULL, 16);
    [commandToSend appendBytes:&whole_byte length:1];
}
return commandToSend;

}
补充一下:这里传进来的Str已经是16进制的数字。
比方说发送字符串:JLBT 就应该先变成16进制:NSString * Str = @"4a4c4254";
然后你发出去的数据就是16进制的数据啦

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号