Looks really strange:
from struct import *
data = pack("<f", 1096037602)
print unpack("<f", data)
> 1096037632
from struct import *
data = pack("<f", 1096037602)
print unpack("<f", data)
> 1096037632
h = hashlib.sha256(data + h).digest()
hsh_exec = SHA256.new() hsh_exec.update(data + hsh) h = hsh_exec.digest()
#define DISALLOW_COPY_AND_ASSIGN(ClassName) \ ClassName(const ClassName&); \ void operator=(const ClassName&);
class ClassName {
private:
DISALLOW_COPY_AND_ASSIGN(ClassName);
...
public:
...
};
def get_bytes_size_units(num):
""" Get file size with proper units of measurement.
"""
range_titles = ["b", "kB", "Mb", "Gb", "Tb", "PB", "EB", "ZP", "YB"]
range_titles_len = len(range_titles)
i = 1
prev_value = 0
new_value = num
is_iteration = True
while is_iteration:
prev_value = new_value
new_value = num >> ((i << 1) * 5)
i += 1
is_iteration = new_value < 0 and i < range_titles_len
i -= 2
return "%.2f%s" % (float(num) / float(1 << ((i << 1) * 5)), range_titles[i])
#=====1
# wrdRx = Pref.wrdRx
# """counts by counting all the start-of-word characters"""
# # regex to find word characters
# matchingWrd = False
# words = 0
# for ch in content:
# # # test if this char is a word char
# isWrd = wrdRx(ch)
# if isWrd and not matchingWrd:
# words = words + 1
# matchingWrd = True
# if not isWrd:
# matchingWrd = False
#=====2
wrdRx = Pref.wrdRx
words = len([x for x in content.replace('\n', ' ').split(' ') if False == x.isdigit() and wrdRx(x)])
На первый вгляд, алгоритм 1 должен работать лучше и экономней. Фактически, перед нами нечто наподобие state machine, и его сложность не больше o(n). В то время как второй алгоритм создаёт кучу новых элементов только для того, чтобы их пересчитать.