问题标签 [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 投票
1 回答
8518 浏览

assembly - 压缩十进制到 ascii 程序集

我正在尝试将压缩十进制数转换为 ascii 字符串。到目前为止,这是我的理解:

以下:

“解包”后应转换为十进制数 34。现在我不确定这样做的最佳方式。如果我将此十六进制数转换为二进制,则如下...

现在,如果我的程序一次打印出每个 4 位二进制值,那么它应该打印 ascii 数字字符串,对吗?所以如果我通过一个循环,获取第一个 4 位二进制数,打印出它的实际值,它会打印 3.. 然后做同样的事情,它会打印 4。

所以,这是我的一般想法:

取一个 8 位值“34h”,将其移动到 AH 和 AL 中。在 AH 中,使用以下命令清除后半部分:

在 AL 中,使用以下命令清除前半部分:

所以 AH = 0110b 或 3 和 AL = 0100b 或 4,然后相应地打印出来..

这是一个好方法吗?还是我的想法完全不正确或过度思考?

编辑:这是我的最终解决方案,原始值为 12345678h。感谢所有帮助过的人!

0 投票
2 回答
1295 浏览

unsigned - 有符号和无符号 16 位 BCD 之间的区别?

你怎么区分?例如,假设您有0110 0101 1001 0011. 无符号 BCD 是 6593,但有符号值是多少?

0 投票
2 回答
25669 浏览

sum - Verilog 中的 BCD 加法器

我正在尝试在 Verilog 中编写 BCD 加法器,但其中一个模块遇到了问题。具体来说,加法器采用两个 BCD 数字并将它们相加。所以,这个想法是,如果两位数之和小于或等于九,那么它是正确的。但是,如果它更大,则必须添加 6 的偏移量。到目前为止,这是我的 Verilog 代码:

无论如何,当我尝试在 Xilinx 中合成它时,我收到以下错误:

错误:HDLCompilers:247 - “DIGITADD.v”第 33 行对标量线“c2”的引用不是合法的 reg 或变量左值

错误:HDLCompilers:247 - “DIGITADD.v”第 33 行对标量线“s2”的引用不是合法的 reg 或变量左值

错误:HDLCompilers:42 -“DIGITADD.v”第 33 行非法的程序分配左侧

我尝试更改一些东西,例如将电线更改为 reg,但我仍然无法使其正常工作。任何帮助表示赞赏。

0 投票
5 回答
69984 浏览

hex - 二进制编码十进制 (BCD) 到十六进制转换

有人可以向我解释如何将BCD转换为十六进制吗?例如,我如何将 98(BCD)转换为十六进制。谢谢。

0 投票
3 回答
2728 浏览

c# - BCD 十六进制字符串到整数

我能够修改 Brad Christie 提供的解决方案,以获得我期望的小时、分钟、秒、月、日和年的结果,所有这些都是 BCD 格式:

我想提供这个问题的更新。设备在新年期间运行了几天后,我能够完全确认 Brad 发布的代码解决方案完全符合我们的需要。

我能够确认我的怀疑,即预期值确实是二进制编码的十进制,我能够确认预期值仅适用于具有 HEX 值。一位同事能够独立确认时间和日期,使用表格作为标准,所以我觉得把它放在床上很舒服。

我能够确认无论出于何种原因,数据的十进制值不起作用,我只能得出结论,设备正在以十六进制值发送数据,我唯一担心的是其他应用程序是否会以类似的方法工作。

感谢大家帮助我解决这个问题,一些评论让我走上了一条让我弄清楚的道路。

0 投票
2 回答
662 浏览

java - 如何在 Java 中将 byte[](包括 BCD 编码值)解析为 Object

我想知道是否有一种简单的方法可以将包含已知布局的数据结构的字节数组“转换”为对象。byte[] 由 BCD 压缩值、1 或 2 字节整数值和字符值组成。我通过读取带有FileInputStream.

在 IBM 大型机系统上工作过的人马上就会明白我的意思——问题是我必须在 Java 中做同样的事情。

欢迎任何建议。

0 投票
1 回答
232 浏览

java - java - 如何在java中读取反向字节序的BDC时间?

所以我有这个字节数组:

这代表"12:36:48"了我所说的“反转字节序 BDC”。

要对其进行解码,只需遵循本手册:

这很公平。

我只是不知道如何在 Java 中完成这项工作。

基本上,我如何反转字节数组的字节序(假设这确实是字节序问题)?

以及如何从 Java 中的 BCD 字节获取正确的值?我的意思是,如果我做典型的& 0xFF事情显然会出错......

谢谢,

0 投票
2 回答
16093 浏览

c++ - 将二进制编码的十进制 (BCD) 解码为无符号整数

我的项目中使用的值用 4 位二进制编码十进制 (BCD) 表示,它最初存储在字符缓冲区中(例如,由指针指向const unsigned char *)。我想将输入的 BCD 字符流转换为整数。你能告诉我一个有效和快速的方法吗?

数据格式示例和预期结果:

非常感谢你!

0 投票
3 回答
4594 浏览

c++ - 我在哪里可以找到一个免费或开源的 C++ 库来做 BCD 数学?

在哪里可以找到免费或开源 C++ 库来进行二进制编码十进制数学?

0 投票
1 回答
2891 浏览

c++ - 将 6/10/12 位流转换为缩放的 unsigned char/short


在 PC 的世界中,一个字节通常表示 8 位的内存边界对齐,计算机将其视为一个单元。在小型和大型计算机中,较长的序列,如 16 位和 32 位(分别称为全字和双字)也是可能的。

但在遥感世界中,传感器/探测器用于通过使用它们自己的辐射分辨率(例如 6 位、10 位和 12 位)来测量来自大气和地球的辐射强度的变化。因此,地面站采集的遥感原始数据图像总是以 6 位、10 位或 12 位 BCD 流的形式打包。这些数据逐个扫描线存储。

我的工作是从一个打开的二进制文件中一个一个地读取这种扫描线,并存储到一个无符号字符源缓冲区中一段时间​​。对于 6 位流,我必须缩放到 8 位(一个字节),对于 10 位或 12 位流,我会将它们缩放为无符号短整数。最后,我应该得到一个无符号字符(6 位)或无符号短目标缓冲区。

你能告诉我怎么做吗?C/C++ 代码演示将不胜感激!谢谢你。