記憶體資料的十六進位制Print
在程式的除錯過程中,經常需要輸出各種資料,正常情況下使用 printf 和 cout 即可實現資料輸出。然而在輸出二進位制資料時, printf 和 out 卻有點無能為力。那麼如何比較二進位制資料是否正確呢?
方案一:檔案輸出。檔案可以輸入任何資料,但是需要在程式之外比較檔案,這對於少量資料並不划算。
方案二:實現自定義的十六進位制輸出函式。當然,也可是八進位制,一般而言十六進位制更易看懂 ( 習慣 ) 。下面給出一個最近實現的此類函式。該函式可將指定長度任何記憶體資料以十六進位制格式輸出。 這個程式對 32 和 64 位的 PC 均適用。
注意: %x 無法正確列印負數,負數總是列印成 32bit 整型數, 64 位 PC 也是如此。
#include <stdio.h>
#include <string>void HexOutput(const char* buf, size_t len)
{
printf("The Hex output of data :\n\t0x");
for(size_t i=0; i<len; ++i)
{
unsigned char c = buf[i]; // must use unsigned char to print >128 value
if( c< 16)
{
printf("0%x", c);
}
else
{
printf("%x", c);
}
}
printf("\n");
}
int main()
{
char c = 'A';
HexOutput(&c, 1);
c = 'a';
HexOutput(&c, 1);
c = 255;
printf("\t%x\n", c);
HexOutput(&c, 1);
c = -1;
HexOutput(&c, 1);
printf("\t%x\n", c);
short sc = -8;
HexOutput((char*)&sc, 2);
printf("\t%x\n", sc);
char buf[20] = {0};
HexOutput(buf, 20);
std::string str = "BRSACP";
HexOutput(str.c_str(), str.size());
buf[0] = 0xFD; buf[1] = 0xFE;
HexOutput(buf, 2);
memcpy(buf+2, str.c_str(), str.size());
HexOutput(buf, 20);
long long value = 0xFDFE425253414350LLU; // LLU or LL is necessary for 32 PC
HexOutput((char*)&value, 8);
Return 0;
}
相關文章
- 十進位制轉十六進位制
- C++資料格式化5 - uint轉換成十六進位制字串&二進位制的data列印成十六進位制字串C++UI字串
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- 十進位制——二 (八、十六 )進位制
- 十六進位制數轉十進位制
- 進位制詳解:二進位制、八進位制和十六進位制
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Qt進位制轉換(十進位制轉十六進位制)QT
- 十六進位制轉換為八進位制
- 十六進位制轉換為十進位制
- 二進位制、十進位制與十六進位制相互轉化
- php中RGB轉十六進位制、十六進位制轉RGBPHP
- 位,位元組,二進位制,十六進位制間的關係
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- 二進位制檔案記憶體對映記憶體
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 八進位制,十六進位制和浮點數
- JavaScript十六進位制和八進位制字面量JavaScript
- [MSSQL]將十進位制轉成十六進位制SQL
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 僅做筆記用:base64字串轉換為十六進位制形式表示的二進位制資料筆記字串
- C語言十進位制,八進位制,十六進位制輸出分析C語言
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- 基礎練習 十六進位制轉八進位制
- asp中以十六進位制顯示字串資料 (轉)字串
- 記錄:匯出檔案為十六進位制
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- java 十六進位制輸出Java
- 十六進位制計算器
- Qt解析十六進位制串QT
- 【轉帖】Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回