[英]Char* and byte* equality comparison (numbers and text)
我有以下一個char *鍵,它是一個可以包含整數或文本的char數組。 因此,例如,鍵的值可以為3或tom
我有一個byte *數據數組,其中包含存儲的數據。 我需要測試密鑰是否等於數據。
目前,我的邏輯是:
int j = 0 ;
for (j = 0; j < len; j++) {
sprintf(key_cmp, "%02x", (ulong)*data++);
}
if (!strcmp(key, key_cmp)) fprintf(stderr, "Equal \n");
我意識到這段代碼是不正確的,因為我試圖在此處打印為十六進制而不是char……但是當我嘗試使用%02x時,會打印出垃圾。
我還如何確保01和1相等? 我意識到這可能在字節順序上有所不同,因此我想不出一個通用的解決方案。 我想避免使用atoi,所以想知道是否還有另一種方法(主要是因為我沒有知道鍵是否為整數的真正方法)
謝謝
猜測是您的問題是%02x
是int
的格式,而不是unsigned long
%02x
因此您在系統上,其中sizeof(int)!=sizeof(long)
會引起問題。
有關格式說明符的描述,請參見[Wiki] [1]。
因為char []是1個字節,byte []是1個字節,所以將它們比較為字節數組(無符號char)會更容易。 無需任何特殊格式即可執行相同的操作。
memcmp(key,data,len)
strcmp(key,data,len)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.