簡體   English   中英

字符*和字節*相等性比較(數字和文本)

[英]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,所以想知道是否還有另一種方法(主要是因為我沒有知道鍵是否為整數的真正方法)

謝謝

猜測是您的問題是%02xint的格式,而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM