- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的任务是使用iOS设备解码存储在Aztec条码上的数据。我可以访问汇编发送到条形码打印机的字符串的代码,但是打印本身是一个黑匣子。
当我逐步执行此过程时,可以看到发送到打印机的字符串如下所示(请注意,除了前8个字符以外,这是一个加密的字符串):
_36_30_30_30_30_34_7c_5d_49_0b_ea_f7_93_ba_89_d2_c6_c2_41_2a_d7_1c_49_8c_6d_4b_5c_07_5a_ca_7a_6a_c6_d5_d0_6c_f7_20_76_5b_e0_18_46_93_7e_2a_30_0d_14_3a_1a_e5_66_7c_05_f9_df_96_8a_f1_45_a5_4a_6e_2f_89_3f_f0_93_1f_bc_3e_77_5b_27_0c_58_df_55_37_4c_ae_8a_e7_c3_c6_16_5b_57_db_7c_2d_2c_8b_1c_e3_a4_44_1b_c4_ba_6a_c6_98_93_ae_2d_20_6e_9f_e8_0f_eb_bc_9f_2e_8a_e7_cf_da_22_96_e1_74_de_b2_f0_29_ec_b1_c1_75_43_1f_b2_e5_1f_a5_f6_06_3e_97_a1_a1_93_f4_51_4a_c4_14_9f_1a_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_c2_5b_ba_02_45_44_2b_b3_06_0b_12_75_85_8b_07_fb
打印的条形码如下所示:
但是,当我使用通用的iOS条码读取器将其读回时(我尝试了几次),得到以下信息:
600004|]I�ê÷ºÒÆÂA*×�ImK\�ZÊzjÆÕÐl÷ v[à�F~*0
�:�åf|�ùßñE¥Jn/?ð�¼>w['�XßU7L®çÃÆ�[WÛ|-,�ã¤D�ĺjÆ®- nè�PÐk^¡±xOS5·Óþ�ßá×D¢\���¥ö�>¡¡ôQJÄ��Â[º�ED+³Â[º�ED+³Â[º�ED+³Â[º�ED+³Â[º�ED+³Â[º�ED+³���u�û
最佳答案
注意:为清楚起见,您将其称为加密字符串,而我将其称为十六进制代码,以进一步与文章结尾处的随机字符串区别开来。
摘要
我相信您在字符串中看到的编码是混杂的ASCII / ISO-8859-1编码。它省略了一些字符,因此无法从该字符串中恢复原始的十六进制代码。找到能够正确处理条形码的扫描仪后,发现条形码与您的十六进制代码不匹配。
编码方式
Wikipedia says,默认情况下,Aztec中的字节码在0到127之间时会解释为ASCII,在128到255之间时会解释为ISO-8859-1。因此,当您替换字母和符号时,会使用这两种编码中的正确十六进制值您得到以下信息:
36 30 30 30 30 34 7C 5D 49 EA F7 BA D2 C6 C2 41 2A D7 49 6D 4B 5C 5A CA 7A 6A C6 D5 D0 6C F7 20 76 5B E0 46 7E 2A 30 0A 3A E5 66 7C F9 DF F1 45 A5 4A 6E 2F 3F F0 BC 3E 77 5B 27 58 DF 55 37 4C AE E7 C3 C6 5B 57 DB 7C 2D 2C E3 A4 44 C4 BA 6A C6 AE 2D 20 6E E8 50 D0 6B 5E A1 B1 78 4F 53 35 B7 D3 FE DF E1 D7 44 A2 5C
这类似于您的加密十六进制代码,但是省略了一些字节,并且加粗的E8
字节之后的内容有所不同。省略的字节全部来自00
-1F
和80
-9F
范围。 ASCII中的00
-1F
范围是控制代码,其中大多数很少使用,许多应用程序也不很好地支持。其他范围在ISO-8859-12中未定义。因此,任何试图将这些字节解释为ASCII / ISO-8859-1字符串的应用程序都可能导致无法预测的行为。
如果从加密的十六进制代码中的这些范围中删除字节,则您得到的基本上与我得到的相同,直到E8
字节。 E8
之后的字节是0F
。我以前从未听说过此控制代码,但apparently称为“移入”,其功能是“移出后返回常规字符集”。由于我们已经遇到了字符集问题,因此我只能假定此控制代码是E8
字节后的解释错误的原因。
编辑:您最近的编辑之一修改了字符串,现在它包含以下几个字符:。这是Unicode的替换字符,当存在字符编码问题或进程无法解释特定字符时,该字符通常会替换其他字符。在这种情况下,它将替换ASCIIt控件00
-1F
范围内的许多字节。仍然无法恢复。 80
-9F
范围仍被省略。
更好的条形码阅读器
为了正确解释条形码,您需要一个不会将十六进制代码解释为编码字符串而是字节流的读取器。至少,您需要一个仍保留00
-1F
和80
-9F
范围的阅读器。
我发现的这类读者之一是NeoReader。完全有可能您已经尝试过,但是复制粘贴会导致这些特殊代码范围的错误。
我在iOS 7设备上用它扫描了代码,然后点击了该应用程序提供的“复制到剪贴板”按钮。然后,将字符串粘贴在this converter的顶部,然后单击convert。我通常将此转换器用于Unicode内容,但是我发现其他专用的文本至十六进制转换器无法处理字符串及其特殊代码。如果向下滚动到“十六进制代码点”,则尽管它们以一个额外的00
4为前缀,但您应该能够看到所需的十六进制代码。
它产生的字符串(尽管带着一粒盐,但是我遇到了一些复制粘贴错误,并且看起来特殊的控件在发布时被删除了):
600004 |] Iê÷ºÒÆA*×ImK \ZÊzjÆÕÐl÷v [àF〜* 0
:åf|ùßñE¥Jn /?ð¼> w ['XßU7L®çÃÆ[WÛ|-,ã¤DĺjÆ®-nèPÐk^¡±xOS5·Óþßá×D¢\¥ö>¡¡ôQJÄÂ[ºED+³[[ED + ³[ºED+³[ºED+³[ºED+³[ºED+³]uû
十六进制代码比较(差异由< >
标记):
Your hex code: 36 30 30 30 30 34 7C 5D 49 0B EA F7 93 BA 89 D2 C6 C2 41 2A D7 1C 49 8C 6D 4B 5C 07 5A CA 7A 6A C6 D5 D0 6C F7 20 76 5B E0 18 46 93 7E 2A 30 <0D> 14 3A 1A E5 66 7C 05 F9 DF 96 8A F1 45 A5 4A 6E 2F 89 3F F0 93 1F BC 3E 77 5B 27 0C 58 DF 55 37 4C AE 8A E7 C3 C6 16 5B 57 DB 7C 2D 2C 8B 1C E3 A4 44 1B C4 BA 6A C6 98 93 AE 2D 20 6E 9F E8 0F <EB BC 9F 2E 8A E7 CF DA 22 96 E1 74 DE B2 F0 29 EC B1 C1 75 43 1F B2 E5> 1F A5 F6 06 3E 97 A1 A1 93 F4 51 4A C4 14 9F 1A C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 06 0B 12 75 85 8B 07 FB
NeoReader string: 36 30 30 30 30 34 7C 5D 49 0B EA F7 93 BA 89 D2 C6 C2 41 2A D7 1C 49 8C 6D 4B 5C 07 5A CA 7A 6A C6 D5 D0 6C F7 20 76 5B E0 18 46 93 7E 2A 30 <0A> 14 3A 1A E5 66 7C 05 F9 DF 96 8A F1 45 A5 4A 6E 2F 89 3F F0 93 1F BC 3E 77 5B 27 0C 58 DF 55 37 4C AE 8A E7 C3 C6 16 5B 57 DB 7C 2D 2C 8B 1C E3 A4 44 1B C4 BA 6A C6 98 93 AE 2D 20 6E 9F E8 0F <81 50 D0 6B 5E A1 B1 78 4F 53 35 B7 D3 FE 1F DF E1 90 D7 44 A2 5C 00 19> 1F A5 F6 06 3E 97 A1 A1 93 F4 51 4A C4 14 9F 1A C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 C2 5B BA 02 45 44 2B B3 06 0B 12 75 85 8B 07 FB
0F
字节处出现分歧,而条形码实际上遵循NeoReader的建议。下图显示了该图像,该图像放大了条形码的右下象限(蓝线表示未对数据进行编码的部分,它们将有助于确定扫描仪的方向)。
0A
<->
0D
的差异是由于我这一部分的复制粘贴错误。
0A
字符,这是换行符。您的字符串包含0D
,这是另一个换行符。不同的系统对新行的处理方式不同,它们自动更改新行字符的情况并不罕见。与大多数其他ASCII控制代码不同,通常很好地支持换行符。 00
。 关于ios - 无法识别条形码中的字符串编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32663952/
IO 设备如何知道属于它的内存中的值在memory mapped IO 中发生了变化? ? 例如,假设内存地址 0 专用于保存 VGA 设备的背景颜色。当我们更改 memory[0] 中的值时,VGA
我目前正在开发一个使用Facebook sdk登录(通过FBLoginView)的iOS应用。 一切正常,除了那些拥有较旧版本的facebook的人。 当他们按下“使用Facebook登录”按钮时,他
假设我有: this - is an - example - with some - dashesNSRange将使用`rangeOfString:@“-”拾取“-”的第一个实例,但是如果我只想要最后
Card.io SDK提供以下详细信息: 卡号,有效期,月份,年份,CVV和邮政编码。 如何从此SDK获取国家名称。 - (void)userDidProvideCreditCardInfo:(Car
iOS 应用程序如何从网络服务下载图片并在安装过程中将它们安装到用户的 iOS 设备上?可能吗? 最佳答案 您无法控制应用在用户设备上的安装,因此无法在安装过程中下载其他数据。 只需在安装后首次启动应
我曾经开发过一款企业版 iOS 产品,我们公司曾将其出售给大型企业,供他们的员工使用。 该应用程序通过 AppStore 提供,企业用户获得了公司特定的配置文件(包含应用程序配置文件)以启用他们有权使
我正在尝试将 Card.io SDK 集成到我的 iOS 应用程序中。我想为 CardIO ui 做一个简单的本地化,如更改取消按钮标题或“在此保留信用卡”提示文本。 我在 github 上找到了这个
我正在使用 CardIOView 和 CardIOViewDelegate 类,没有可以设置为 YES 的 BOOL 来扫描 collectCardholderName。我可以看到它在 CardIOP
我有一个集成了通话工具包的 voip 应用程序。每次我从我的 voip 应用程序调用时,都会在 native 电话应用程序中创建一个新的最近通话记录。我在 voip 应用程序中也有自定义联系人(电话应
iOS 应用程序如何知道应用程序打开时屏幕上是否已经有键盘?应用程序运行后,它可以接收键盘显示/隐藏通知。但是,如果应用程序在分屏模式下作为辅助应用程序打开,而主应用程序已经显示键盘,则辅助应用程序不
我在模拟器中收到以下错误: ImageIO: CGImageReadSessionGetCachedImageBlockData *** CGImageReadSessionGetCachedIm
如 Apple 文档所示,可以通过 EAAccessory Framework 与经过认证的配件(由 Apple 认证)进行通信。但是我有点困惑,因为一些帖子告诉我它也可以通过 CoreBluetoo
尽管现在的调试器已经很不错了,但有时找出应用程序中正在发生的事情的最好方法仍然是古老的 NSLog。当您连接到计算机时,这样做很容易; Xcode 会帮助弹出日志查看器面板,然后就可以了。当您不在办公
在我的 iOS 应用程序中,我定义了一些兴趣点。其中一些有一个 Kontakt.io 信标的名称,它绑定(bind)到一个特定的 PoI(我的意思是通常贴在信标标签上的名称)。现在我想在附近发现信标,
我正在为警报提示创建一个 trigger.io 插件。尝试从警报提示返回数据。这是我的代码: // Prompt + (void)show_prompt:(ForgeTask*)task{
您好,我是 Apple iOS 的新手。我阅读并搜索了很多关于推送通知的文章,但我没有发现任何关于 APNS 从 io4 到 ios 6 的新更新的信息。任何人都可以向我提供 APNS 如何在 ios
UITabBar 的高度似乎在 iOS 7 和 8/9/10/11 之间发生了变化。我发布这个问题是为了让其他人轻松找到答案。 那么:在 iPhone 和 iPad 上的 iOS 8/9/10/11
我想我可以针对不同的 iOS 版本使用不同的 Storyboard。 由于 UI 的差异,我将创建下一个 Storyboard: Main_iPhone.storyboard Main_iPad.st
我正在写一些东西,我将使用设备的 iTunes 库中的一部分音轨来覆盖 2 个视频的组合,例如: AVMutableComposition* mixComposition = [[AVMutableC
我创建了一个简单的 iOS 程序,可以顺利编译并在 iPad 模拟器上运行良好。当我告诉 XCode 4 使用我连接的 iPad 设备时,无法编译相同的程序。问题似乎是当我尝试使用附加的 iPad 时
我是一名优秀的程序员,十分优秀!