You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odin语言:如何将字节数组转为ASCII字符/字符串并打印?

Odin语言读取用户输入并打印文本内容的解决方法

刚接触Odin语言,官方文档涵盖变量、循环、字符串等内容,但未找到获取用户输入并打印的相关方法。编写了如下代码:

import "core:fmt"
import "core:os"
import "core:strings"

main :: proc() 
{
    
    fmt.print("Enter something: ");
    buf: [256]byte; 
    num_bytes, err := os.read(os.stdin, buf[:]);

    fmt.println("You entered:");
    fmt.print(buf);

}

运行该代码时,输入“hello”后输出的是字节数组的数值(如[104, 101, 108, 108, 111, 13, 10, 0, ...]),而非文本内容。使用的是Windows系统,希望将读取到的字节数组以ASCII字符形式打印,或者转换为字符串后打印,请问该如何实现?

解决方法

方法1:直接打印有效字节的ASCII内容

fmt.print(buf)会输出整个字节数组的结构(包括未使用的空字节),只需指定实际读取到的字节范围即可打印文本:

import "core:fmt"
import "core:os"

main :: proc() 
{
    fmt.print("Enter something: ");
    buf: [256]byte; 
    num_bytes, err := os.read(os.stdin, buf[:]);
    
    // 可选:处理读取错误
    if err != nil {
        fmt.printf("读取错误: %v\n", err);
        return;
    }

    fmt.println("You entered:");
    fmt.print(buf[:num_bytes]); // 仅打印实际读取的字节内容
}

方法2:转换为字符串后打印

利用Odin的字符串构造语法,将有效字节切片转为字符串再打印,逻辑更直观:

import "core:fmt"
import "core:os"

main :: proc() 
{
    fmt.print("Enter something: ");
    buf: [256]byte; 
    num_bytes, err := os.read(os.stdin, buf[:]);
    
    if err != nil {
        fmt.printf("读取错误: %v\n", err);
        return;
    }

    input_str := string(buf[:num_bytes]); // 字节切片转字符串
    fmt.println("You entered:");
    fmt.print(input_str);
}

额外优化:去除输入末尾的换行符

Windows下输入的换行符是\r\n,如果需要去掉可以用strings.trim_suffix处理:

import "core:fmt"
import "core:os"
import "core:strings"

main :: proc() 
{
    fmt.print("Enter something: ");
    buf: [256]byte; 
    num_bytes, err := os.read(os.stdin, buf[:]);
    
    if err != nil {
        fmt.printf("读取错误: %v\n", err);
        return;
    }

    input_str := string(buf[:num_bytes]);
    // 移除Windows换行符
    input_str = strings.trim_suffix(input_str, "\r\n");
    // 兼容Linux/macOS的换行符(可选)
    input_str = strings.trim_suffix(input_str, "\n");
    
    fmt.println("You entered:");
    fmt.print(input_str);
}

内容的提问来源于stack exchange,提问作者Coding with Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:53:14