>
나는 char로 문자열 char의 ASCII (int 및 hex 형식) 표현을 가져와야합니다. 예를 들어 문자열 "hello"가 있으면 int ascii 104 101 108 108 111 를 얻을 수 있습니다. 그리고 hex 68 65 6C 6C 6F

  • 답변 # 1

    어떻게 :

    char *str = "hello";
    while (*str) {
        printf("%c %u %x\n", *str, *str, *str);
        str++;
    }
    
    

  • 답변 # 2

    C에서 문자열은 인접한 메모리 위치에있는 여러 문자입니다.(1)은 문자열을 문자 단위로 반복합니다.(2)각 문자를 출력합니다.

    (1)에 대한 해답은 문자열의 표현 (0으로 끝나거나 명시적인 길이로)에 따라 다릅니다. 0으로 끝나는 문자열의 경우

    char *c = "a string";
    for (char *i = c; *i; ++i) {
       // do something with *i
    }
    
    

    명시적인 길이를 사용하려면

    for (int i = 0; i < length; ++i) {
       // do something with c[i]
    }
    
    

    (2)에 대한 솔루션은 분명히 달성하려는 목표에 달려 있습니다. 단순히 값을 출력하려면 cnicutar의 답변을 따르고 printf 를 사용하십시오 . 표현이 포함 된 (0으로 끝나는) 문자열을 얻으려면

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    /* convert a 0-terminated string to a 0-terminated string of its ascii values,
     * seperated by spaces. The user is responsible to free() the result.
     */
    char *to_ascii(const char *inputstring) {
       // allocate the maximum needed to store the ascii represention:
       char *output = malloc(sizeof(char) * (strlen(inputstring) * 4 + 1));
       char *output_end = output;
       if (!output) // allocation failed! omg!
          exit(EXIT_FAILURE);
       *output_end = '\0';
       for (; *inputstring; ++inputstring) {
          output_end += sprintf(output_end, "%u ", *inputstring);
          //assert(output_end == '\0');
       }
      return output;
    }
    
    

    명시 적 길이의 문자열을 출력해야하는 경우 strlen() 를 사용하십시오.  또는 차이 (size_t)(output_end-output) .

  • 답변 # 3

    int main()
    {
    enum type {decimal, hexa};
    char *str = "hello";
    char *temp_str = NULL;
    temp_str = str;
    static enum type index = decimal;
    while (*str) {
        if(index == decimal)
         printf("%u\t", *str);
        else
         printf("%x\t",*str);
        str++;
    }
    printf("\n");
    if(index != hexa)
    {
       index = hexa;
       str = temp_str;
       main();
    }
    }
    
    

    이것이 u 원하는대로 잘 작동하고 uint8_t 배열에 저장하려면 변수를 선언해야합니다.

  • 답변 # 4

    이것은 5 살이라는 것을 알고 있지만 첫 번째 실제 프로그램은 문자열을 ASCII로 변환했으며 변수를 getchar ()에 할당 한 다음 printf ()에서 호출하여 깨끗하고 간단한 방법으로 수행했습니다. 물론 루프에있는 동안 정수로, 그렇지 않으면 getchar ()는 단일 문자 만 허용합니다.

    #include <stdio.h>
    int main() 
    {
        int i = 0;
        while((i = getchar()) != EOF)
            printf("%d ", i);
        return 0;
    }
    
    

    다음은 for () 루프를 사용하는 원래 버전입니다. 프로그램을 만들 수있는 크기를보고 싶었 기 때문입니다.

    #include <stdio.h>
    int main() 
    {
        for(int i = 0; (i = getchar()) != EOF; printf("%d ", i); 
    }
    
    

  • 답변 # 5

    /* Receives a string and returns an unsigned integer 
    equivalent to its ASCII values summed up */
    unsigned int str2int(unsigned char *str){
        int str_len = strlen(str);
        unsigned int str_int = 0;
        int counter = 0;
        while(counter <= str_len){
            str_int+= str[counter];
            printf("Acumulator:%d\n", str_int);
            counter++;
        }
        return str_int;
    }
    
    

  • 이전 excel - 통화 및 금액 찾기, 배열의 ID 저장소 및 출력 시트에 붙여 넣기
  • 다음 node.js - firebase firestore - 클라우드 함수에서 collectiongroup 쿼리 사용