Golang中将32位数字转换为字符串的方法

Golang中将32位数字转换为字符串的方法 我想使用Go将下面的32位数字转换为字符串值。

01000111000111111111111100011001

是否有现成的方法可以实现这个功能?

谢谢。

// 示例代码
func convertToString(num string) string {
    return num
}
11 回复

更多关于Golang中将32位数字转换为字符串的方法的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


所以您期望的是这样吗?

"01000111000111111111111100011001"

相同值即可。我需要将32位数字作为字符串处理,并执行一些分割操作。

%032b 表示二进制格式,共32位数字,用零填充。

完整文档请参阅:https://golang.org/pkg/fmt/

预期的结果是什么?使用了哪种编码?

  • ASCII
  • LATIN-1
  • UTF-8
  • UTF-16-LE
  • UTF-16-BE
  • UTF-32

fmt.Sprintf("%032b\n", s) 会返回一个字符串,它本身不会产生任何输出。你是如何生成输出结果的?

func main() {
    fmt.Println("hello world")
}

01000111000111111111111100011001 是如何进入你的系统的?这不是一个有效的 int 类型。请向我们展示你用来获取这个数字的代码示例。

// 请在此处提供你的代码示例

谢谢。但是如何调用这个

fmt.Sprintf("%032b\n", s)

s 的值是 -1000111000111111111111100011001。

我得到以下输出

%b(string="1000111000111111111111100011001")

谢谢, Raja

感谢。这个方法有效。我正在尝试在开头添加"0"。我想要得到以下输出:

“01000111000111111111111100011001”

i := 1193279257
s := fmt.Sprintf("%b", i)
fmt.Println("0" +s)

但我得到的是以下输出:

0"1000111000111111111111100011001"

给你代码

package main

import (
	"fmt"
)

func main() {
	i := 1193279257
	s := fmt.Sprintf("\"%b\"", i)
	fmt.Println(s)
}

输出:

"1000111000111111111111100011001"

在Go语言中,将32位二进制数字字符串转换为对应的字符串,需要先将其解析为整数,然后转换为字符。以下是几种实现方法:

方法1:使用strconv.ParseInt和字符串转换

package main

import (
    "fmt"
    "strconv"
)

func convertBinaryToString(binaryStr string) (string, error) {
    // 将二进制字符串解析为int64
    num, err := strconv.ParseInt(binaryStr, 2, 64)
    if err != nil {
        return "", err
    }
    
    // 将数字转换为字符串
    return string(rune(num)), nil
}

func main() {
    binaryStr := "01000111000111111111111100011001"
    result, err := convertBinaryToString(binaryStr)
    if err != nil {
        fmt.Println("转换错误:", err)
        return
    }
    fmt.Printf("二进制: %s\n字符串: %s\n", binaryStr, result)
}

方法2:处理32位无符号整数

package main

import (
    "fmt"
    "strconv"
)

func convertBinaryToUTF8(binaryStr string) (string, error) {
    // 解析为uint32
    num, err := strconv.ParseUint(binaryStr, 2, 32)
    if err != nil {
        return "", err
    }
    
    // 转换为UTF-8字符
    return string(rune(num)), nil
}

func main() {
    binaryStr := "01000111000111111111111100011001"
    result, err := convertBinaryToUTF8(binaryStr)
    if err != nil {
        fmt.Println("转换错误:", err)
        return
    }
    fmt.Printf("二进制: %s\nUTF-8字符: %s\nUnicode码点: U+%04X\n", 
        binaryStr, result, []rune(result)[0])
}

方法3:批量转换多个32位二进制字符串

package main

import (
    "fmt"
    "strconv"
)

func convertMultipleBinaries(binaries []string) []string {
    var results []string
    
    for _, binary := range binaries {
        num, err := strconv.ParseUint(binary, 2, 32)
        if err != nil {
            results = append(results, fmt.Sprintf("错误: %v", err))
            continue
        }
        results = append(results, string(rune(num)))
    }
    
    return results
}

func main() {
    binaryStrings := []string{
        "01000111000111111111111100011001",
        "01001000011001010110110001101100", // "Hello"中的字符
        "0110111100100000",
    }
    
    results := convertMultipleBinaries(binaryStrings)
    for i, result := range results {
        fmt.Printf("二进制 %d: %s -> %s\n", i+1, binaryStrings[i], result)
    }
}

对于你提供的二进制字符串 01000111000111111111111100011001,转换后的Unicode码点是 U+471FFF19,对应的字符可能是一个扩展的Unicode字符。

关键点:

  • 使用 strconv.ParseIntstrconv.ParseUint 解析二进制字符串
  • 第二个参数 2 表示二进制基数
  • 第三个参数指定位大小(32或64)
  • 使用 string(rune(num)) 将数字转换为对应的UTF-8字符
回到顶部