2011-06-30 29 views
0

我將字符串轉換爲十六進制,但是當我轉換時,十六進制代碼有2 *長度(字符串)我可以這樣做「字符串長度= hexstring長度」是可能的嗎?如何將字符串轉換爲十六進制而不更改其長度?

我發現此代碼是否有效?

var 
    fs: TFileStream; 
    temp: Char; 
    buffer: string; 
    pBuffer: PAnsiChar; 
    text: PAnsiChar; 
begin 
    fs := TFileStream.Create('file way', fmOpenRead or fmShareDenyNone); 
    fs.Position := 0; 
    while fs.Position < fs.Size do 
    begin 
    fs.Read(temp, 1); //buffer içine her defasında 1 byte gelir. 
    buffer := buffer + temp; 
    end; 
    pBuffer := PAnsiChar(buffer); 
    BinToHex(pBuffer, text, Length(buffer)); 
    Memo1.Text := text; 
end; 

回答

3

要做到這一點的唯一方法是以某種方式將字符映射到4位值並將其轉換爲十六進制。那將意味着只有十六個值是可能的,所以,不,如果有超過十六種可能性,你不能以一般的方式做到這一點。

八位值(或從五位到八位的任何長度)要求每個值需要兩個十六進制數字。

+1

或我可以看到任何文件的十六進制代碼? –

+1

你是什麼意思? –

相關問題