問題タブ [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 - PLCでBCD=Decimalなのはなぜですか?

この質問は、私の前のSO質問の表彰から派生しています。

PLCのBCDと小数の解釈と混同しています。PLCのドキュメントでは、BCD=10進数を意味します。

ここに画像の説明を入力してください

この命令は、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 ライブラリの代替品を探しています。これは、表現できる最大 10 進数などの制限に達し、プログラムがEBcdOverflowExceptionで終了するためです。興味深いことに、私は算術級数メンバーを計算しており、非常に大きな数を処理する必要があります.10万の位置はそれほど珍しいことではありません. また、妥当な時間内に結果を取得します。テスト目的でコードの一部を Python 3.2 に書き直しましたが、計算速度は Delphi の同等の速度で十分です。

そのようなライブラリ、できれば無料またはオープンソースの推奨事項はありますか?

0 投票する
1 に答える
2981 参照

python - Python BCD分割ニブルと連結2 int

これを投稿するための完全なツールのように感じます。これは非常に基本的なものであり、この問題で過去 2 日間を無駄にしたとは思えません。これで見つけられるすべての解決策を試しましたが(真剣に、インターネットの履歴をお見せします)、役に立ちませんでした. 問題は次のとおりです。

uC からのシリアル文字列を解析しています。長さは 52 バイトで、データのさまざまな変数が多数含まれています。パック 2 進化 10 進数でエンコードされたデータ。

元:.....blah.....0x01 0x5E .....blah

16 進数の 015E は 10 進数で 350 になります。これが私が望む価値です。シリアル文字列を問題なく読み取っています。binascii.hexifiy を使用してバイトを出力し、正しいことを確認しました。私が使う

data = ser.read()

改行が受信されない場合は、データを配列に配置します。配列をバイト配列、リスト、見つけることができるものにしようとしましたが、どれも機能しません。

必要な 2 バイト セクションを定義済みメソッドに送信したいと考えています。

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

真剣に、ここで本当に基本的な何かが欠けていますか? 私が見つけることができるすべての例は、上記のすべての関数を完全に利用していますが、16 進数 '0x1234' を特定しているか、変換している数値が実際の ASCII 数値です。助けてください。

編集 私はそれを手に入れました、ch3kaは私を正しい軌道に乗せました、ありがとう!

以前はうまくいかなかった理由はわかりませんが、両方の値を16進数にしました

そして、ch3ka で定義された char makeValues を使用しました。

再度、感謝します!!!

0 投票する
1 に答える
2494 参照

c# - 別の BCD バイト [] を int に戻し、再び戻す

いくつかの変換に問題があり、コードの何が問題なのか、またはコードが何をしなければならないのかという考えを見つけることができません。

次のバイトがあります[]

私はこの方法で ulong に変換します:

次に、次に 1 を追加します。

次に、ulong を変換してバイト配列に戻したいと思います。こことウェブで見つけたいくつかのbcdアルゴリズムを試しましたが、期待した結果が得られません:

の代わりに

私が試したほとんどのソリューションで得ています。

以下は、私が使用したアルゴリズムの 1 つです。

私が間違っていることは何ですか?または私は概念の問題を抱えていますか?

0 投票する
2 に答える
6737 参照

c# - float を BCD に変換する方法

C#で正の浮動小数点数(ieee 754、単精度32ビット)をBCDに変換するにはどうすればよいですか?

アップデート

私が間違っていなければ、私が必要としているのはパックされた BCD と呼ばれるものです。私はすでに int から BCD への変換を行っています。私のやり方では、数値 1234 は次のバイト配列になります。

私が使用する方法(おそらく最善の方法ではありません)は次のとおりです。

0 投票する
2 に答える
21582 参照

python - Python、2 進化 10 進数 (BCD) のデコード方法

バイナリ フィールドの説明は次のとおりです。

発信者番号を圧縮BCDコードで表現し、余剰ビットを「0xF」で埋める

'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 の最後の 3 つの数字は 10 進数である必要があります)
  • 合計金額 1~9999999999(BCD)

バイナリ リーダーで 16 進ファイルを読み込んでから、単価のバイト配列を挿入します。

この配列は単価です。しかし、どうすればこの数値を 10 進数に変換できますか。そして、情報によると、数量: BCD の最後の数値は 10 進数である必要があります。これはどういう意味ですか? ありがとう。

0 投票する
2 に答える
2344 参照

encoding - BCD16の意味

Ama ファイル生成シミュレーターを作成しています。Ama 仕様では、フィールドのバイト数 (ビット数ではない) を BCD16、BCD12 など (BCD{数値}) として指定します。

BCD16 のフィールドの場合、実際の長さは 8 バイトです。BCD16 の意味を教えてください。BCD が 2 進化 10 進数であることは知っていますが、BCD16 の意味がわかりません。

0 投票する
3 に答える
12113 参照

integer - VHDL を使用して符号なし整数を BCD にデコードする方法

ご覧のとおり、VHDL では、MOD と REM のみをシミュレートできますが、合成することはできません。では、符号なし整数から BCD を取得するにはどうすればよいでしょうか? たとえば、整数は 23 ですが、BCD:0b0010 と 0b0011 を取得するにはどうすればよいでしょうか? ありがとう。

0 投票する
10 に答える
45987 参照

c - 整数を(純粋な)バイナリからBCDに変換します

私はこの問題を解決するために今愚かです...

BCD番号を取得します(すべての桁は独自の4ビット表現です)

たとえば、私が欲しいもの:

  • 入力:202(hex)== 514(dec)
  • 出力:BCD 0x415

  • 入力:0x202

  • ビット表現:0010 0000 0010 = 514

私は何を試しましたか:

しかし、これは非常に間違っていることを知っています。これはビット表現で202になり、5ニブルに分割されて、再び10進数として表されます。

紙で問題を解決することはできますが、単純なCコードでは解決できません。