暂时将字符串中的字母索引到不同的二进制文件
Temporarily index letters in a string to a different binary
出于自学目的:
所以 ASCII 把每个字符都用二进制表示对吧? A = 65 = 01000001,等等。不过我很好奇,如果您想暂时将变量切换为不同的变量以保存 space,是否有一种简单的方法可以做到这一点?就像我有一个只需要 4 个字母的项目,我可以存储 AR 为 01,RA 为 11,SQ 为 00,QS 为 10 吗?这样,如果我需要回读数据,速度会快得多。我做了一点纸上数学,它会快 20 倍。
目前我主要使用 python,但我也有使用 C++ 的经验。如果有人有想法,我将不胜感激使用那些具有内置函数的语言(如果它们存在)的答案。但就像我说的,我主要只是好奇。如果它需要在接近硬件级别的情况下完成,那就太好了。
谢谢大家!!!
首先,它只会使您的代码在理论上为这些变量减少 20 倍 space,而不会使其更快或减小整个代码的大小。在实践中,差异可以忽略不计,它会破坏与标准 (ASCII) 的兼容性,并且在不使用 ctypes
.
的情况下,没有直接的方法在 Python 中实现这一点
在纯 python 中,如果您尝试制作字典以将 "AR"
转换为二进制数 10
(或十进制的 2
),它将被存储作为 int,它使用 32 bits
或 4 bytes
.
此外,内存不能存储在少于一个字节中,您可以使用 ctypes.c_uint8
或 bitarray
.
将多个变量存储在一个字节中
来自 C 中的 Whosebug 问题
When is it worthwhile to use bit fields?
Whilst bit-fields can lead to neat syntax, they're pretty
platform-dependent, and therefore non-portable. A more portable, but
yet more verbose, approach is to use direct bitwise manipulation,
using shifts and bit-masks.
If you use bit-fields for anything other than assembling (or
disassembling) structures at some physical interface, performance may
suffer. This is because every time you read or write from a bit-field,
the compiler will have to generate code to do the masking and
shifting, which will burn cycles.
python 的不同会使情况变得更糟。
出于自学目的:
所以 ASCII 把每个字符都用二进制表示对吧? A = 65 = 01000001,等等。不过我很好奇,如果您想暂时将变量切换为不同的变量以保存 space,是否有一种简单的方法可以做到这一点?就像我有一个只需要 4 个字母的项目,我可以存储 AR 为 01,RA 为 11,SQ 为 00,QS 为 10 吗?这样,如果我需要回读数据,速度会快得多。我做了一点纸上数学,它会快 20 倍。
目前我主要使用 python,但我也有使用 C++ 的经验。如果有人有想法,我将不胜感激使用那些具有内置函数的语言(如果它们存在)的答案。但就像我说的,我主要只是好奇。如果它需要在接近硬件级别的情况下完成,那就太好了。
谢谢大家!!!
首先,它只会使您的代码在理论上为这些变量减少 20 倍 space,而不会使其更快或减小整个代码的大小。在实践中,差异可以忽略不计,它会破坏与标准 (ASCII) 的兼容性,并且在不使用 ctypes
.
在纯 python 中,如果您尝试制作字典以将 "AR"
转换为二进制数 10
(或十进制的 2
),它将被存储作为 int,它使用 32 bits
或 4 bytes
.
此外,内存不能存储在少于一个字节中,您可以使用 ctypes.c_uint8
或 bitarray
.
来自 C 中的 Whosebug 问题
When is it worthwhile to use bit fields?
Whilst bit-fields can lead to neat syntax, they're pretty platform-dependent, and therefore non-portable. A more portable, but yet more verbose, approach is to use direct bitwise manipulation, using shifts and bit-masks.
If you use bit-fields for anything other than assembling (or disassembling) structures at some physical interface, performance may suffer. This is because every time you read or write from a bit-field, the compiler will have to generate code to do the masking and shifting, which will burn cycles.
python 的不同会使情况变得更糟。