我正在尝试将以下 C++ 片段转换为 Golang,但我没有任何运气使语法正确。这是 C++ 代码段的样子:v8::String::Utf8Value reqStringObj(args[1]);const char *reqString = *reqStringObj;char hex[3] = {reqString[strlen(reqString) - 2], reqString[strlen(reqString) - 1], '\0'};unsigned char requestId = (unsigned char)strtoul (hex, 0, 16);printf("requestId is: %d\n", requestId);到目前为止,这是我通过 Go 版本获得的:reqStr := "somerandomstringthatihave"hex := []uint8{reqStr[len(reqStr)-2], reqStr[len(reqStr)-1], '\u0027'}requestId := ?????我不确定如何转换strtoulC++ 函数中提到的强制转换函数,使其通过 Go 版本以相同的方式工作。有任何想法吗?
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
您可以使用strconv.ParseUint以下方法轻松完成此操作:
reqStr := "jfd0jifdgfa"
if len(reqStr) <= 1 {
panic("reqStr not long enough")
}
requestId, err := strconv.ParseUint(reqStr[len(reqStr) - 2:], 16, 64)
if err != nil {
panic(err)
}
记住最后两个字符reqStr必须是有效的十六进制字符,否则上面的代码会出错。
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消