簡體   English   中英

將字符串轉換為十六進制

[英]converting string to hex

我有一個具有0111111100000000000000000000101的字符串

我想將其轉換為十六進制,所以我使用了下面的代碼

    int assembledHex;
    sscanf(buffer, "%x", &assembledHex);
    printf("this is the assembled hex %x\n",assembledHex);

但是當我打印它時,它的輸出為101。我認為sscanf可以從字符串轉換為十六進制,這是我做錯了什么以及如何解決。 我想要的結果是0x3F800005

這是沒有檢查或任何東西,也很慢,但這是一個快速的開始:

unsigned int bin_to_int(const char *s) {
    int i;
    unsigned int result;

    result = 0;

    if (s[0] == '1') result++;

    for (i = 1; i < strlen(s); i++) {
        result <<= 1;

        if (s[i] == '1') {
            result++;
        }
    }

    return result;
}

您的sscanf將字符串讀取為HEX,但該字符串以二進制形式編寫。 您將得到“ 101”,因為int只能存儲前8位-每個數字為4位,因此兩位= 8位= 1個字節,而8位為4個字節,這是int的大小。 因此,您實際上存儲了“ 00000101”,購買printf不會打印前導零,因此您會得到“ 101”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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