這裏是我的邏輯,以十六進制轉換爲ASCII的轉換在C:十六進制ASCII碼在C
for (i=0;i<ArraySize;i++)
{
/*uses a bitwise AND to take the top 4 bits from the byte,
0xF0 is 11110000 in binary*/
char1 = Tmp[i] & 0xf0;
char1 = char1 >> 4;
/*bit-shift the result to the right by four bits (i.e. quickly divides by 16)*/
if (char1 >9)
{
char1 = char1 - 0xa;
char1 = char1 + 'A';
}
else
char1 = char1 + '0';
Loc[j]=char1;
j++;
/*means use a bitwise AND to take the bottom four bits from the byte,
0x0F is 00001111 in binary*/
char1 = Tmp[i] & 0x0f;
if (char1 >9)
{
char1 = char1 - 0xa;
char1 = char1 + 'A';
}
else
char1 = char1 + '0';
Loc[j]=char1;
j++;
Loc[j]=0;
}
溫度和LOC的字符串緩衝區。定義並有數據。它工作不正常。我正在從一些文件(樣本fread)讀取temp中的數據。它停止在特定點閱讀文件。如果我改變第一
0XF0
到
爲0x0F
這裏是如何的文件正在讀取:
BytesRead = fread (Tmp,1,Bytes,PrcFile);
然後它讀取整個文件。我無法找到遺漏的東西。在這方面你能幫助我嗎? 感謝
你能證明確實的文件讀/寫的代碼?該算法看起來正確。 – 2012-02-10 11:46:51
看起來更像是一個BIN到HEX(ASCII)的轉換。 – Till 2012-02-10 11:47:20
添加讀取文件和構建數組的代碼。 – 2012-02-10 11:47:47