【发布时间】:2009-07-17 13:34:23
【问题描述】:
我正在使用 C 语言的 PIC 微处理器。它是 16F,因此它不能保存大于 32 位的整数(无符号 int32 是可用的最大数据大小)
从阅读器那里,我收到一个 5 字节的 ID 代码。要传输它,我必须逐位编码为 BCD。我无法将其冲刺成字符串,因为它大于数据大小,并且无法处理它。我不能分割它,因为它没有定义任何操作。
我想不出任何可能的解决方案,以前有没有人处理过这个问题?
编辑:
我收到 5 个字节的数字:
FF-FF-FF-FF-FF
我需要把它转换成十进制
0123456789012
(13 位,十进制长度为 256^5)通过 RS232 发送。第二个函数(获取 ASCII,然后发送)我已经让它工作了,但我需要完整数字的字符串表示,然后才能对它做任何事情。
【问题讨论】:
-
请说得更具体些...你是如何收到这 5 个字节的?作为一个 unsigned char 数组?那么你需要传输的格式是什么?
-
您的问题有点令人困惑:如果我理解正确,您会收到一个 5 字节长的数组,代表一个 ID。这个 ID 无论如何都没有被编码,只是一个 5*8 位长的整数,对吧?而您将其转换为该 ID 的十进制 ascii 表示,对吗?我问是因为您提到了BCD,我不明白它在哪里使用? ID 收到时是否以 BCD 编码?
-
不,我必须以 BCD 输出,因此我需要十进制数的字符串表示形式(int 版本不够,因为我必须逐位发送)我需要转换 5 字节 Id 表示(5 个无符号 8 位)以发送整数。 (收件人可以将该数字转换为十六进制并获得原始的 5 个字节)
-
好的,知道了。我可能有一个想法,我会尝试发布一些示例代码;)
-
这是一个有趣的问题,但它并没有得到太多的 veiws,这是一个耻辱。很多人说“只使用一个库”,以至于他们从未考虑过如何实际做这样的事情。