- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试通过 iOS/Objective C 使用 Tumblr API 对 png 进行 urlencode 上传。这相对令人难以置信,但 Tumblr API 只接受在一个照片集中上传多张照片的“urlencoded 二进制数据”,并获胜' 接受通常的简单表单数据发布。我有一个 working Python example provided by Tumblr .它需要一个图像/二进制文件并将其读取为这种(我猜是十六进制)格式:
'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00 \x00\x00\x00\x1d\x08\x06\x00\x00\x00\xcb\x9en\x87\x00\x00\x01\xc9IDATH\r\xc5\x971K\x03A\x10\x85s\nB \x10\xb0\n\xa4\xb2J\x95* \x08\x82\x95\xbfA\x10\xfc\x01V\xb6\x82\x95?\xc0J\x10\x04[[\xc16U@\xb0\x8d`/(\x8a\x82\x08Z\t\x12\x89\xdf$\xd9p\x9c\xae\xfb&\x9c8\xf0\xd8\xbd\xdb\xb7o^\xe6\x96\xb9K6\x1c\x0e+\xb3D\x96e\xf3\xeck\xb3\xffj\x96\xfda\xcf\\\x98\xa8#\x89\xdb\xe0\x1c\xfe\x00\xf4\x99\x0f@\x17\xec\x80\xba\xaa3\xe5Y\x05\x14\xb0\xa1\x06\x0e\xc0=\xb0\xb2\xfd\x84\x17\xee\xaf(z\x81#%72\xb1\x1bIZ4r\x03\xaf\x16\x12\xa4F\xc9\x00\x82\xf6\xbcM\xb8\x98,v\xbd\x9fJ\x1c\xd6\xd53\xd0 \xf9\x12Pc]%\xaa\x06\x9e\x11\xfcTE\xe1\xd9y\x91B2@\xb9>P{\x90\x14\xc7$\xe3K!\x19\x98(Y\x15\xd4xR\x89\x1e\x03\xef\xaa(\xbc7\x95\xeb1\xd0RE\xe1-\xab\\\x8f\x01\xcf\x19\xb8\xfb\x0b\x03\x9e\x9e\x7f\xad\x1a\x90\x1a\x915\rb\x15\xdc\x82X\xf3\t\xf7\x1f\xe1tB\xa3I\x8d\xb2\x81\x89\x89=\xc1\xc0v*i~\xdds\x06\xc8]QJ\xabpLk\x1cy7\xa99;\x16@\x1f\x84r\x17\xc7K\xe3\xa4t\xf2\xeb\xde\n\xd8;\xe1\xb7\x13n\xcd\xca^\\z\xe4\xdd\xa4\xe6\xa8^\x80\xe2\xaf.^\x9f\xa4t\xf2\xeb\xd2!$i\x13\x1c\n\xc9\x83\x993\xb8\xad|\xa2\xd8<j\x00\x01{\xde\x9b\xa0\x0b\x82\xb0w\xec\xb1w\x0bTe\x03\x90;\xc0~\xad}^y\x13\xc6\xf8\xafh\x1d\x81o\xfdaZ\x01\x167\x80\xf2\x8ccI\xd4\xfb=\xf2\xac\x85\x8a\x8c\x0cp\xe3\x14\xa8\x02e\xf1\x8e\xcd\x84\x85}>\x95%\xea\xd5iX\x1f\xf0|\xeb\x99\xe12\xa3i\x06\xfc\x7f&\xca\xb30\xaa\xc0byzn\xa5\xbaU\xe0?\rT\xbf\x00\x87\x89 \xa8s3+7\x00\x00\x00\x00IEND\xaeB`\x82'
然后它会做一些 url 编码来创建这个:
89PNG%250D%250A%251A%250A%2500%2500%2500%250DIHDR%2500%2500%2500%2520%2500%2500%2500%251D%2508%2506%2500%2500%2500%25CB%259En%2587%2500%2500%2501%25C9IDATH%250D%25C5%25971K%2503A%2510%2585s%250AB%2520%2510%25B0%250A%25A4%25B2J%2595%252A%2520%2508%2582%2595%25BFA%2510%25FC%2501V%25B6%2582%2595%253F%25C0J%2510%2504%255B%255B%25C16U%2540%25B0%258D%2560%252F%2528%258A%2582%2508Z%2509%2512%2589%25DF%2524%25D9p%259C%25AE%25FB%2526%259C8%25F0%25D8%25BD%25DB%25B7o%255E%25E6%2596%25B9K6%251C%250E%252B%25B3D%2596e%25F3%25ECk%25B3%25FFj%2596%25FDa%25CF%255C%2598%25A8%2523%2589%25DB%25E0%251C%25FE%2500%25F4%2599%250F%2540%2517%25EC%2580%25BA%25AA3%25E5Y%2505%2514%25B0%25A1%2506%250E%25C0%253D%25B0%25B2%25FD%2584%2517%25EE%25AF%2528z%2581%2523%252572%25B1%251BIZ4r%2503%25AF%2516%2512%25A4F%25C9%2500%2582%25F6%25BCM%25B8%2598%252Cv%25BD%259FJ%251C%25D6%25D53%25D0%2520%25F9%2512Pc%255D%2525%25AA%2506%259E%2511%25FCTE%25E1%25D9y%2591B2%2540%25B9%253EP%257B%2590%2514%25C7%2524%25E3K%2521%2519%2598%2528Y%2515%25D4xR%2589%251E%2503%25EF%25AA%2528%25BC7%2595%25EB1%25D0RE%25E1-%25AB%255C%258F%2501%25CF%2519%25B8%25FB%250B%2503%259E%259E%257F%25AD%251A%2590%251A%25915%250Db%2515%25DC%2582X%25F3%2509%25F7%251F%25E1tB%25A3I%258D%25B2%2581%2589%2589%253D%25C1%25C0v%252Ai~%25DDs%2506%25C8%255DQJ%25ABpLk%251Cy7%25A99%253B%2516%2540%251F%2584r%2517%25C7K%25E3%25A4t%25F2%25EB%25DE%250A%25D8%253B%25E1%25B7%2513n%25CD%25CA%255E%255Cz%25E4%25DD%25A4%25E6%25A8%255E%2580%25E2%25AF.%255E%259F%25A4t%25F2%25EB%25D2%2521%2524i%2513%251C%250A%25C9%2583%25993%25B8%25AD%257C%25A2%25D8%253Cj%2500%2501%257B%25DE%259B%25A0%250B%2582%25B0w%25EC%25B1w%250BTe%2503%2590%253B%25C0~%25AD%257D%255Ey%2513%25C6%25F8%25AFh%251D%2581o%25FDaZ%2501%25167%2580%25F2%258CcI%25D4%25FB%253D%25F2%25AC%2585%258A%258C%250Cp%25E3%2514%25A8%2502e%25F1%258E%25CD%2584%2585%257D%253E%2595%2525%25EA%25D5iX%251F%25F0%257C%25EB%2599%25E12%25A3i%2506%25FC%257F%2526%25CA%25B30%25AA%25C0byzn%25A5%25BAU%25E0%253F%250DT%25BF%2500%2587%2589%2520%25A8s3%252B7%2500%2500%2500%2500IEND%25AEB%2560%2582
然后它将上述数据与其他一些数据一起发布。我如何在 Objective C 中执行此操作——即获取 89PNG... 字符串?我尝试使用以下方式阅读图片:
NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"filename" ofType:@"png"]];
然后我使用以下方法转换为十六进制字符串:
NSString *dataString = [data description];
dataString = [[dataString stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];
然后给我留下了一些看起来很接近的东西:
89504e470d0a1a0a0000000d49484452000000200000001d0806000000cb9e6e87000001c949444154480dc597314b03411085730a422010b00aa4b24a952a20088295bf4110fc0156b682953fc04a10045b5bc1365540b08d602f288a82085a091289df24d9709caefb269c38f0d8bddbb76f5ee696b94b361c0e2bb3449665f3ec6bb3ff6a96fd61cf5c98a82389dbe01cfe00f4990f4017ec80baaa33e5590514b0a1060ec03db0b2fd8417eeaf287a8123253732b11b495a347203af1612a446c90082f6bc4db8982c76bd9f4a1cd6d533d020f91250635d25aa069e11fc5445e1d97991423240b93e507b9014c724e34b211998285915d47852891e03efaa28bc3795eb31d05245e12dab5c8f01cf19b8fb0b039e9e7fad1a901a91350d6215dc8258f309f71fe17442a3498db28189893dc1c0762a697edd7306c85d514aab704c6b1c7937a9393b16401f847217c74be3a474f2ebde0ad83be1b7136ecdca5e5c7ae4dda4e6a85e80e2af2e5e9fa474f2ebd2212469131c0ac9839933b8ad7ca2d83c6a00017bde9ba00b82b077ecb1770b546503903bc07ead7d5e7913c6f8af681d816ffd615a01163780f28c6349d4fb3df2ac858a8c0c70e314a80265f18ecd84857d3e9525ead569581ff07ceb99e132a36906fc7f26cab330aac062797a6ea5ba55e03f0d54bf00878920a873332b370000000049454e44ae426082
但遗憾的是还不够接近。接下来我该怎么做才能将该字符串转换为 89PNG... 字符串?
最佳答案
根据 Tumblr 发布的 Python 代码,我想出了如何根据 Tumblr 的多张照片上传需求对十六进制数据进行 url 编码,并且我创建了一个类别,它将 NSData 从图像文件转换为 url 编码的十六进制字符串。可能有更有效/更快的方法来做到这一点......有人吗?
编辑:我已经 created a GitHub project负责此转换。
关于objective-c - 如何在 objective-c 中将文件转换为这种十六进制表示法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409924/
这个问题在这里已经有了答案: How to initialize var? (11 个答案) 关闭 8 年前。 我想给一个变量赋初值 null,并在下一个 if-else block 中赋值,但是编
我正在使用 TypeScript 3.8 编写 JS 和 TS 混合的代码。我写了以下行: export * as Easing from './easing'; 应该是 fair game在 Typ
我需要将 R 代码中的“/”更改为“\”。我有这样的事情: tmp <- paste(getwd(),"tmp.xls",sep="/") 所以我的 tmp是 c:/Study/tmp.xls 我希望
我有个问题。例如我有这个: id truth count 1 1 1 2 1 2 3 0 0 4 1 1 5 1 2 6 1
我正在尝试使用“IN”和“=”来查找一些 bean。我目前正在使用此代码: $ids = array(1,2,3,4); $user = 1; $things = R::find( 'thing'
是否可以在 Xcode 中部署到其他人的手机上?我没有 iPhone,但我想测试我在 friend 手机上制作的应用程序。在我支付 99 美元之前,我想确保这不会造成麻烦。 谢谢。 最佳答案 不会有任
我试图得到一个非常大的数字(超过 unsigned long long int )。所以我把它作为一个字符串,然后一个数字一个数字地转换成整数并使用它。 #include #include int
我在 Rust 中有 C 语言库的绑定(bind),但它们并不完整。 在 C 代码中,我定义了一个简化的宏,如下所示: #define MY_MACROS1(PTR) (((my_struct1
我正在努力解决这个问题。 http://jsfiddle.net/yhcqfy44/ 动画应该自动相对于 滚动到顶部每次出现滚动条时的高度。 我已经写了这个,但没有运气: var hheight =
我正在处理一个将数字作为字符串返回的 JSON API。例如 "12" ,但是,该字段值也可以是非数字的,例如:"-" . 我已将 JSON 数据解析为映射,我想将此字段提取为 elixir 中的整数
我正在尝试编写一个类,将.wav文件转换为.aiff文件作为项目的一部分。 我遇到了几个库Alvas.Audio(http://alvas.net/alvas.audio,overview.aspx)
我想在 Lucene 中将像“New York”这样的“复合词”索引为单个术语,而不是像“new”、“york”那样。这样,如果有人搜索“new place”,则包含“new york”的文档将不会匹
我希望这个解释能让我更好地了解使用宏的优点。 最佳答案 在函数中,所有参数在调用之前都会被评估。 这意味着 or 作为函数不能是惰性的,而宏可以将 or 重写为 if 语句,该语句仅在以下情况下计算分
我有一些看起来像这样的 XML foo ]]> (注意 > 登录 "> foo")和 XSLT 样式表 当我运行xsltproc stylesheet.xs
当我尝试将 Any 转换为 List 时,如下面的示例所示,我得到“Unchecked cast: Any!”到列表'警告。有没有解决此类问题的方法? val x: List = objectOfTy
我正在使用 Python 开发一个简单的爬虫。目的是创建一个 sitemap.xml。(你可以在这里找到真正的 alpha 版本:http://code.google.com/p/sitemappy/
我想知道在 VBScript 中是否可以在多行中中断 If 语句。喜欢: If (UCase(Trim(objSheet.Cells(i, a).Value)) = "YES") Or _ (UCas
for (String item : someList) { System.out.println(item); } 使用“do while”是否等效? 谢谢。 最佳答案 如果列表为空,f
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: Split string with delimiters in C 在 C 中将“,”分隔的列表拆分为数组的最佳方法
我有一个如下所示的字符数组: [0, 10, 20, 30, 670] 如何将此字符串转换为整数数组? 这是我的数组 int i=0; size_t dim = 1; char* array = (c
我是一名优秀的程序员,十分优秀!