问题标签 [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.

0 投票
2 回答
16659 浏览

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)。

为什么?

0 投票
2 回答
2192 浏览

delphi - 用于任意大数字的 BCD 数学库?

我正在寻找替换现有的 Delphi Data.FmtBcd 库,因为我刚刚达到了它的限制,例如它可以表示的最大十进制数字,并且程序以EBcdOverflowException终止。对于好奇的人,我正在计算算术级数成员并且需要处理非常大的数字 - 十万个位置并不少见。并且在合理的时间内得到结果。出于测试目的,我确实将部分代码重写为 Python 3.2,并且计算速度对于 Delphi 的等价物来说已经足够了。

对此类库的一些建议,最好是免费的或开源的?

0 投票
1 回答
2981 浏览

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 定义:

再次感谢!!!

0 投票
1 回答
2494 浏览

c# - 另一个 BCD 字节 [] 到 int 并再次返回

我在进行一些转换时遇到了麻烦,并且找不到代码有什么问题,或者不知道它必须做什么。

我有以下字节[]

我以这种方式将其转换为 ulong :

接下来我将 1 添加到下一个:

然后,我想将 ulong 转换回字节数组。我尝试了在这里和网上找到的几种 bcd 算法,但我无法得到我期望的结果:

安装的

我尝试过的大多数解决方案都得到了这一点。

这是我使用的算法之一:

我做错了什么?还是我有概念问题?

0 投票
2 回答
6737 浏览

c# - 如何将浮点数转换为 BCD

如何在 C# 中将正浮点数(ieee 754,单精度 32 位)转换为 BCD?

更新

如果我没记错的话,我需要的是所谓的打包 BCD。我已经在进行 int 到 BCD 的转换。以我正在做的方式,数字 1234 将导致以下字节数组:

我使用的方法(这可能不是最好的方法)是:

0 投票
2 回答
21582 浏览

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 码?

0 投票
5 回答
28242 浏览

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最后一个数字应该是十进制 - 这是什么意思?谢谢。

0 投票
2 回答
2344 浏览

encoding - BCD16 是什么意思

我正在编写一个 Ama 文件生成模拟器。在 Ama 规范中,它给出了 BCD16、BCD12 等(BCD{a number})字段的字节数(不是比特数)。

对于具有 BCD16 的字段,实际长度为 8 个字节。谁能告诉我BCD16是什么意思?我知道 BCD 是二进制编码的十进制,但不明白 BCD16 是什么意思。

0 投票
3 回答
12113 浏览

integer - 如何使用 VHDL 将无符号整数解码为 BCD

我们可以看到,在VHDL中,MOD和REM只能模拟,不能合成。那么我们如何从无符号整数中得到BCD呢?比如整数是23,怎么得到BCD:0b0010和0b0011呢?谢谢。

0 投票
10 回答
45987 浏览

c - 将整数从(纯)二进制转换为 BCD

我现在很愚蠢,无法解决这个问题...

我得到一个 BCD 数字(每个数字都是自己的 4 位表示)

例如,我想要什么:

  • 输入:202(十六进制)== 514(十进制)
  • 输出:BCD 0x415

  • 输入:0x202

  • 位表示:0010 0000 0010 = 514

我尝试了什么:

但我知道这是非常错误的,这将是位表示的 202,然后分成 5 个半字节,然后再次表示为十进制数

我可以在纸上解决问题,但我无法用简单的 C 代码解决