如何在一个整数中转换一个char数组来表示它的ascii值?

时间:2011-11-21 00:27:33

标签: c ascii

我有一个4个字符的数组,我需要他的ascii值在一个数字。 例如,数组中是"joh0"。结果应该是十六进制0x6a726f00或int 111617776。 我在函数ntohl(int x)中使用它。

2 个答案:

答案 0 :(得分:1)

根据你的描述,它听起来像你想要的(可能与指数交换):

char str[] = "joh0";

uint32_t val = (uint32_t)str[0]
             | (uint32_t)str[1] << 8
             | (uint32_t)str[2] << 16
             | (uint32_t)str[3] << 24;

但我不知道你从哪里得到106111104048。

答案 1 :(得分:0)

我认为你是以这种方式得到样本号:

Decimal:   106 111 104 048
Character: j   o   h   0

如果是这种情况,您的号码将不适合32位整数值。您需要使用更大的数据类型,例如uint64_tunsigned long long。您需要以下内容:

const char str[] = "joh0";

unsigned long long result = ((unsigned long long)str[0])
                          + ((unsigned long long)str[1] * 1000LLU)
                          + ((unsigned long long)str[2] * 1000000LLU)
                          + ((unsigned long long)str[3] * 1000000000LLU);