這是我的問題。在PHP中,有兩個函數在ColdFusion中難以複製。ColdFusion相當於PHP解壓和SHA1
1)PHP的解壓功能,讓您格式化以一定的方式輸出。其中一種格式選項是'H',代表「Hex字符串,首先是高半字節」 - 我如何在ColdFusion中複製它?
這是我迄今爲止...
<cfscript>
function stringToBinary(String stringValue){
var base64Value = toBase64(stringValue);
var binaryValue = toBinary(base64Value);
return(binaryValue);
}
function stringToHex(String stringValue){
var binaryValue = stringToBinary(stringValue);
var hexValue = binaryEncode(binaryValue, "hex");
return(lcase(hexValue));
}
</cfscript>
所以我想不出來指定在上述(實現高字節也是,我沒有寫此ColdFusion這是奔禮貌納德爾)。
其次,在PHP中有一個用於散列的SHA1函數...該函數有一個參數,它是一個布爾參數「如果可選raw_output設置爲TRUE,則sha1摘要返回原始二進制格式長度爲20,否則返回值爲40個字符的十六進制數字。「所以我的Coldfusion模仿這只是簡單地使用Hash()函數並指定它使用「SHA-1」,然後將其轉換爲二進制文件......但是如何正確地將它限制爲「20」,方式與PHP完全相同呢?
我知道這是參與由我已經難倒了一段時間,現在就這兩個問題...任何幫助是非常讚賞。
這是偉大的信息!我非常欣賞這個迴應。實際上我有一件事要澄清,我沒有在我原來的帖子中說過......解包格式實際上是「H *」而不是「H」 - 任何想法? –
(編輯)我不是一個PHP的人,但[包文檔](http://php.net/manual/en/function.pack.php)說*意味着「...重複輸入的結尾數據」。聽起來像是將它應用到整個輸入字符串,而不僅僅是它的一部分。這就是二進制編碼/解碼無論如何默認做的。再說一次,聽起來你不得不做任何事情。除非您有一個具體的PHP代碼示例,其行爲與CF不同。 – Leigh
@BradMash - 關於[你的(現在刪除的)線程](http://stackoverflow.com/questions/37468449/weird-cfloop-file-behavior),很高興你找到了解決方案,但請記住S.O.線程被存檔以使所有人受益:)與其刪除線程,不如將解決方案作爲答案發布,以便其他人也可以從中受益。 – Leigh