我有一个4个字符的数组,我需要他的ascii值在一个数字。
例如,数组中是"joh0"
。结果应该是十六进制0x6a726f00或int 111617776。
我在函数ntohl(int x)
中使用它。
答案 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_t
或unsigned 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);