问题标签 [bcd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
decimal - 为什么BCD = PLC中的十进制?
这个问题来自我之前的 SO question's 的表扬。
我对 PLC 对 BCD 和十进制的解释感到困惑。在 PLC 文档中,它以某种方式暗示 BCD = 十进制:
指令读取 D300、0100 的内容为 BCD。参考Cyber Slueth Omega 的回答和在线 BCD-Hex 转换器,0100 (BCD) = 4 (Decimal) = 4 (Hex),但文档显示 0100 (BCD) = 100 (Decimal)。
为什么?
delphi - 用于任意大数字的 BCD 数学库?
我正在寻找替换现有的 Delphi Data.FmtBcd 库,因为我刚刚达到了它的限制,例如它可以表示的最大十进制数字,并且程序以EBcdOverflowException终止。对于好奇的人,我正在计算算术级数成员并且需要处理非常大的数字 - 十万个位置并不少见。并且在合理的时间内得到结果。出于测试目的,我确实将部分代码重写为 Python 3.2,并且计算速度对于 Delphi 的等价物来说已经足够了。
对此类库的一些建议,最好是免费的或开源的?
python - Python BCD分割半字节和连接2个整数
我觉得这是一个完整的发布工具,它是如此基础,我不敢相信我在这个问题上浪费了过去两天。我已经尝试了所有我能找到的解决方案(说真的,我会告诉你我的互联网历史)但无济于事。这是问题所在:
我正在从 uC 中解析一个串行字符串。它长 52 个字节,包含许多不同的数据变量。以打包二进制编码的十进制编码的数据。
前任:.....blah.....0x01 0x5E .....blah
015E hex 给出 350 十进制。这就是我想要的价值。我正在读取串行字符串就好了,我使用 binascii.hexifiy 打印字节以确保它是正确的。我用
data = ser.read()
如果没有收到换行符,则将数据放入数组中。我尝试将数组设置为字节数组、列表,以及我能找到的任何东西,但没有任何效果。
我想将所需的两个字节部分发送到定义的方法。
def makeValue(highbyte, lowbyte)
当我尝试使用解包、连接、打包、位操作、字符串集中时,我一直遇到同样的问题。
因为 0x01 和 0x5E 不是有效的 int 数字(ASCII 中的标题和 ^ 的开头),所以它不起作用。它甚至不会让我先加入数字,因为它不是有效的 int。
using hex(): hex argument can't be converted to hex.
Joining the strings: invalid literal for int() with base 16: '\x01^'
using int: invalid literal for int() with base 10: '\x01^'
Packing a struct: struct.error: cannot convert argument to integer
说真的,我在这里错过了一些非常基本的东西吗?我能找到的所有示例都完美地利用了上述所有功能,但它们指定了十六进制数字“0x1234”,或者它们正在转换的数字是实际的 ASCII 数字。请帮忙。
编辑 我明白了,ch3ka 让我走上了正轨,谢谢一百万!
我不知道为什么它以前不起作用,但我对这两个值都进行了十六进制处理
然后使用 char makeValues ch3ka 定义:
再次感谢!!!
c# - 另一个 BCD 字节 [] 到 int 并再次返回
我在进行一些转换时遇到了麻烦,并且找不到代码有什么问题,或者不知道它必须做什么。
我有以下字节[]
我以这种方式将其转换为 ulong :
接下来我将 1 添加到下一个:
然后,我想将 ulong 转换回字节数组。我尝试了在这里和网上找到的几种 bcd 算法,但我无法得到我期望的结果:
安装的
我尝试过的大多数解决方案都得到了这一点。
这是我使用的算法之一:
我做错了什么?还是我有概念问题?
c# - 如何将浮点数转换为 BCD
如何在 C# 中将正浮点数(ieee 754,单精度 32 位)转换为 BCD?
更新
如果我没记错的话,我需要的是所谓的打包 BCD。我已经在进行 int 到 BCD 的转换。以我正在做的方式,数字 1234 将导致以下字节数组:
我使用的方法(这可能不是最好的方法)是:
python - Python,如何解码二进制编码的十进制(BCD)
二进制字段的描述是:
主叫号码,用压缩的BCD码表示,剩余位用“0xF”填充
我尝试使用 struct 格式打印,'16c'
我得到:('3', '\x00', '\x02', '\x05', '\x15', '\x13', 'G', 'O', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff', '\xff')
如果我使用'16b'
我得到(51, 0, 2, 5, 21, 19, 71, 79, -1, -1, -1, -1, -1, -1, -1, -1)
. 而且不正确,我应该得到电话号码,上面的号码无效。
以上是无效的代码,我得到无效的数字。我应该用什么格式解压那个 16 字节的字段以及如何转换 BCD 码?
c# - C# Byte[] 转 BCD 和 BCD 转 INT
我有一个由 CashRegister Machine 创建的 Hex 文件。我必须读入这个文件。
文件使用下面详述的格式。它就像套接字数据包。
代码数据:2 字节
PLU 代码数据:7 字节
单价数据:5 字节
数量数据:5 字节
总金额数据:5 字节
PLU 名称数据:18 字节
税率数据:1 字节
长度:24 + 19 字节
- PLU 代码格式为 BCD
- 单价 1-9999999999 (BCD)
- 数量 1-9999999999(BCD 后三位数字应为十进制)
- 总金额 1-9999999999 (BCD)
我用二进制阅读器读入十六进制文件,然后插入单位价格字节数组。
这个数组是单价。但是我怎样才能将这个数字转换为十进制。并且信息说对于数量:BCD最后一个数字应该是十进制 - 这是什么意思?谢谢。
encoding - BCD16 是什么意思
我正在编写一个 Ama 文件生成模拟器。在 Ama 规范中,它给出了 BCD16、BCD12 等(BCD{a number})字段的字节数(不是比特数)。
对于具有 BCD16 的字段,实际长度为 8 个字节。谁能告诉我BCD16是什么意思?我知道 BCD 是二进制编码的十进制,但不明白 BCD16 是什么意思。
integer - 如何使用 VHDL 将无符号整数解码为 BCD
我们可以看到,在VHDL中,MOD和REM只能模拟,不能合成。那么我们如何从无符号整数中得到BCD呢?比如整数是23,怎么得到BCD:0b0010和0b0011呢?谢谢。
c - 将整数从(纯)二进制转换为 BCD
我现在很愚蠢,无法解决这个问题...
我得到一个 BCD 数字(每个数字都是自己的 4 位表示)
例如,我想要什么:
- 输入:202(十六进制)== 514(十进制)
输出:BCD 0x415
输入:0x202
- 位表示:0010 0000 0010 = 514
我尝试了什么:
但我知道这是非常错误的,这将是位表示的 202,然后分成 5 个半字节,然后再次表示为十进制数
我可以在纸上解决问题,但我无法用简单的 C 代码解决