go - 如何将字符串转换为 C 语言中的 ASCII 字符串?

标签 go

我必须为我的学校做一个密码学项目,我为这个项目选择了 Go!

我读了文档,但我只会 C,所以现在对我来说有点难。

首先,我需要收集程序参数,我做到了。我将所有参数存储在一个字符串变量中,例如:

var text, base string = os.Args[1], os. Args[6]

现在,我需要将 ASCII 码存储在一个 int 数组中,例如,在 C 中我会做类似的事情:

int     arr[18];
char    str[18] = "Hi Stack OverFlow";

arr[i] = str[i] - 96;

那么我怎么能在 Go 中做到这一点呢?

谢谢!

最佳答案

这是一个与其他答案类似但避免导入额外包的示例。

创建一个长度等于string 长度的int slice 。然后迭代字符串以将每个字符提取为 int 并将其分配给 int slice 中的相应索引。这是代码(also on the Go Playground):

package main

import "fmt"

func main() {
    s := "Hi Stack OverFlow"
    fmt.Println(StringToInts(s))
}

// makes a slice of int and stores each char from string
// as int in the slice
func StringToInts(s string) (intSlice []int) {
    intSlice = make([]int, len(s))
    for i, _ := range s {
        intSlice[i] = int(s[i])
    }
    return
}

上述程序的输出是:

[72 105 32 83 116 97 99 107 32 79 118 101 114 70 108 111 119]

上面的 StringToInts 函数应该做你想做的。虽然它返回 intslice(不是数组),但它应该满足您的用例。

关于go - 如何将字符串转换为 C 语言中的 ASCII 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27133888/

相关文章:

go - Go 闭包捕获规则与 defer 有何不同?

amazon-web-services - 如何创建 session 以使用我的个人资料?

list - 戈朗 : create a slice of strutcs

go - 扩展结构定义golang

pointers - 交换和元组分配的基本查询

go - 我怎样才能找到地球上两条线(来自 geojson 的线串)之间的距离

go - 递归定义 SNMP 消息

go - 如何使用geo/s2库确定LatLong位于Go中另一个LatLong的半径内?

linux - Pprof 和 golang - 如何解释结果?

string - 为什么没有在字符串类型上定义字符串函数?