簡體   English   中英

將引號中的字符串轉換為C中的ascii2字節數組

[英]Transferring a string of characters in quotes to an array of ascii2 bytes in C

我如何輕松地將引號中的字符串轉換為ascii2值數組?

例如:

char ST1[5] = "12345";

char DST1[5] = { 0x31, 0x32, 0x33, 0x34, 0x35 }; //string of bytes

幾乎沒有。

首先,請記住,字符串文字如"12345"在末尾有一個額外的“空”字節。 因此,與其將"12345"此數組初始化處理為包含5個元素的數組, "12345"將其實際上是包含6個元素的數組,因此此初始化語句更合適:

char ST1[6] = "12345";

或者只是:

char ST1[] = "12345"; //自動推斷為“ 6”的大小。

等效於:

char DST1[] = {0x31,0x32,0x33,0x34,0x35,0x00};

一旦擁有6個元素的數組,就可以像僅包含5個元素一樣傳遞它:

因此,如果您有一些代碼希望對5個字符組成的數組進行操作:

 void foo(char DST1[])
 {
     for(int i = 0; i < 5; i++)
     { 
         process(DST1[i]);
     }
 }

您可以按以下方式調用它:

char ST1[]="12345";
foo(ST1);

ST1DST1定義之間的唯一區別是無聲假設,即至少對於數字而言,目標字符集是ASCII。

這是另一種選擇:

char CST1[5] = { '1', '2', '3', '4', '5' };

但是請注意,這些char數組都不是正確的C字符串,因為它們都缺少空終止符。 如果用於定義一個C字符串數組,則應使用以下語法:

char SST1[] = "12345";

請注意[]之間缺少的長度:編譯器將確定初始化程序中數組的長度,並添加一個空終止符,因此長度為6

C字符串可以是具有strcpy副本,沒有空終止符的char數組應使用memcpymemmove復制。

一言以蔽之,一個答案就是鑄造。 簡單的方法:

int main () {
    int i;
    char ST1[5]="12345";
    for (i=0;i<5;i++)
        printf("%d\n",(int)ST1[i]);
    return 0;
}

就像我打印的一樣,您可以存儲它,使用它進行計算或任何可能的方法。 正如我所看到的,您希望這些數字以十六進制表示。 為此,只需在這里幫助下更改printf的占位符- 十六進制的printf()格式

暫無
暫無

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

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