【发布时间】:2012-09-28 23:46:06
【问题描述】:
我编写了一个处理 IPv6 地址的程序,我需要将四整数数组转换为表示 IPv6 地址数量的十进制字符串的代码[1]。现在我遇到了需要做反向的情况:将可能很大的数字(不适合uint32_t或uint64_t,所以atol()或strtol()在这里无能为力)表示为单个字符串到四个-integer 或 byte (uint8_t) 数组(我将函数从 [1] 从 4-int 转换为 variable-uint8_t)。
有什么办法吗?
[1]How to convert a 128-bit integer to a decimal ascii string in C?
谢谢。这是我在这里的第一个问题,如果有英语不好,请见谅。
【问题讨论】:
-
嗯,不,inet_ntop() 在这里也不适用;我输入了一个表示为字符串的十进制数,例如“188647402”或“65536”,我需要像 strtol() 那样进行转换,但数字大于 uint32_t 或 uint64_t 可以存储(所以我需要一个数组将值存储到的整数,如 [1] 或 uint8_t 数组,如 inet_pton() 所做的)。简单来说,我需要[1],但是反向操作。