tclを使用して、大きな16進数、たとえば0x111111112222222233333333を32ビット数のリスト(0x11111111 0x22222222 0x33333333)に分割しますか?TCLの32ビット数値のリストに大きな16進数を分割する
1
A
答えて
1
Tclでの算術演算は、任意の長さの数字を扱っているという考え方に基づいています(実装ではさまざまな内部表現が使用されていますが、そのことについてあまり知らないと思われます)。これは、算術的に変換を行うことを意味します。また、逆の順序で番号を抽出し、その番号が符号なしであることが分かっている場合にも役立ちます。
proc extractIntegers {number {bits 32}} {
set accumulator {}
set mask [expr {(1 << $bits) - 1}]
while {$number != 0} {
set value [expr {$number & $mask}]
set number [expr {$number >> $bits}]
lappend accumulator [format "%#x" $value]
}
return [lreverse $accumulator]
}
puts [extractIntegers 0x111111112222222233333333]
0
Donalが指摘する「無限ビット」の場合を処理するために、procを再帰的にすることができます。少なくとも、インタプリタは最終的に最大再帰的深さに達し、エラーになります。
proc extractIntegersRecursive {number {bits 32} {mask 0}} {
if {$number == 0} return
if {$bits <= 0} {error "invalid bits"}
set mask [expr {$mask ? $mask : (1 << $bits) - 1}]
set procname [lindex [info level 0] 0]
return [concat \
[$procname [expr {$number >> $bits}] $bits $mask] \
[format %#x [expr {$number & $mask}]] \
]
}
関連する問題
- 1. 32ビットの16進数を4バイトに分割する[QB64]
- 2. 32ビット16進数の最初の16ビット
- 3. 32ビットの数値を16ビット以下に変換する
- 4. MIPS命令を32ビット16進数に変換する方法
- 5. バイナリファイルを異なる16進数の "型"(8ビット、16ビット、32ビット、...)に読み込む
- 6. VBA大きな16進数の整数
- 7. 浮動小数点数をJavaScriptの32ビット16進数文字列に変換
- 8. 64ビット環境で長い32ビットの16進数を読み取る
- 9. 16進数への16進値
- 10. 16ビットを8ビットの2つの部分に分割する
- 11. Perl 64ビット16進数関数
- 12. 32ビット符号なし "Real"データ型(2つの16ビット符号付きワードに分割)をjavascriptに変換
- 13. 実数値の数値を32ビットより大きい整数値に変換する最善の方法は?
- 14. 10進数から2進数への変換(16ビット)
- 15. 0x00から0x11への変数値の増分値(16進数)
- 16. タイムスタンプconvertion(MS-DOS:人間が読める形式に32ビットの16進値)
- 17. MySQLIMPORT 16進数値
- 18. 32桁の16進数を16バイトの配列に格納する方法は?
- 19. 64ビット整数をスパークデータフレームの32ビット(16ビット)intに変換する価値はありますか?
- 20. 16ビットの輝度値を32ビットのRGB値に変換する
- 21. 16進数値のDB2クエリー
- 22. erlangでバイナリ値を16進数に16進数に変換する方法
- 23. javascript:大きな16進数を操作する
- 24. 特定のビットを設定するには? - 16進数で?
- 25. 64ビットの数値をVBScriptの上位32ビットと下位32ビットに分割するにはどうすればよいですか?
- 26. 大規模な数値の分割(big.Int)
- 27. 16進数を対応するビットに変換する
- 28. 4ビット2進数の乗数を3(mod 16)
- 29. 文字列を16進数で16進数に変換する
- 30. 16ビット16進数の文字列をJavaで符号付き整数に変換する
これを拡張して、負の数(この表現では無限のビット数を持つ)を扱うことがエクササイズとして残されています。 –