我對Matlab相當陌生,儘管不適合編程。我試圖散列一個字符串,並取回一個單一的值,作爲該字符串的唯一ID。我正在使用FileExchange中的DataHash函數,它將散列作爲整數向量返回。到目前爲止,我已經找到了這種轉換爲一個單一的數值最佳的解決方案有云:加入數字矢量的數字
hash_opts.Format = 'uint8';
hash_vector = DataHash(string, hash_opts);
hash_string = num2str(hash_vector);
% Use a simple regex to remove all whitespace from the string,
% takes it from '1 2 3 4' to '1234'
hash_string = regexprep(hash_string, '[\s]', '');
hashcode = str2double(hash_string);
不依賴於DataHash重複的例子:
hash_vector = [1, 23, 4, 567];
hash_string = num2str(hash_vector);
% Use a simple regex to remove all whitespace from the string,
% takes it from '1 2 3 4' to '1234'
hash_string = regexprep(hash_string, '[\s]', '');
hashcode = str2double(hash_string); % Output: 1234567
是否有更有效的方法實現這一點,而不訴諸正則表達式?
@OlegKomarov:我們真的在想同樣的事情。甚至下降到雙精度細節。抱歉。 – horchler
謝謝。我認爲MD5和SHA-1的哈希值可能大於2^53,所以我很欣賞這個警告。 – Marius
@horchler哈哈,我很驚訝自己! – Oleg