iOS里int如何转换成NSData

开始我问了这个问题,先是百度了一下。
他们的方法是。

NSData *rdata = [[NSData alloc]initWithData:[[NSSString stringWithFormat:@"%d",i] dataUsingEncoding:NSUTF8StringEncoding]];

简单点说就是,把int转换为了string,然后再用string变成data。
不由得鼓掌,精彩!然而,int是一个数字啊!比如345,你以这种形式转data那么就是333435。
因为对应的asscii码事这样啊。
345应该是,159才对。
345的十六进制为159。
正确的方法应该是。

                           Byte b1=i & 0xff;
                           Byte b2=(i>>8) & 0xff;
                           Byte b3=(i>>16) & 0xff;
                           Byte b4=(i>>24) & 0xff;
                           Byte byte[] = {b4,b3,b2,b1};
                           NSData *adddata = [NSData dataWithBytes:byte length:sizeof(byte)];

因为项目有规定,所以要传4位。

最近学了CSAPP里面位移运算与按位或运算符。
分别是左移<< 右移>>。 按位或运算符&0xff
左移多少可以简单理解为*2的n次方。
右移可以理解为/2的n次方。
而&0xff就是取8位也就是1个byte的意思。
Byte b1=i & 0xff;
Byte b2=(i>>8) & 0xff;
Byte b3=(i>>16) & 0xff;
Byte b4=(i>>24) & 0xff;
简单理解就是,依次取两位byte变为16进制。

posted @   brave-sailor  阅读(493)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
历史上的今天:
2019-09-03 iOS 作为蓝牙外设广播信息
2018-09-03 iOS AVAudioSession 配置(录音完声音变小问题)
2016-09-03 Android用悬浮按钮实现翻页效果
2016-09-03 Android内存、性能是程序永恒的话题
点击右上角即可分享
微信分享提示