相关疑难解决方法(0)

将十六进制字符串转换为十进制整数

我正在写一个Rust程序,它读取I2C总线并保存数据.当我读了I2C总线,我得到这样的十六进制值0x11,0x22等等.

现在,我只能将其作为字符串处理并按原样保存.有没有办法可以解析为整数?它有内置功能吗?

parsing hex rust

26
推荐指数
1
解决办法
1万
查看次数

如何将char转换为整数,使'1'变为1?

我试图找到给定数字的所有数字的总和,如134给出8.

我的计划是通过将数字转换为.to_string()使用数来迭代数字.chars(),然后使用char迭代数字.然后我想将char迭代中的每个转换为a char并添加到变量中.我想得到这个变量的最终值.

我尝试使用下面的代码将a sum转换为z(Playground):

fn main() {
    let x = "123";
    for y in x.chars() {
        let z = y.parse::<i32>().unwrap();
        println!("{}", z + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

但它会导致此错误:

error[E0599]: no method named `parse` found for type `char` in the current scope
 --> src/main.rs:4:19
  |
4 |         let z = y.parse::<i32>().unwrap();
  |                   ^^^^^
Run Code Online (Sandbox Code Playgroud)

如何将a 134转换为整数?

下面的代码完全符合我的要求(Playground):

fn main() {
    let …
Run Code Online (Sandbox Code Playgroud)

rust

11
推荐指数
3
解决办法
1万
查看次数

如何从结果中获取值?

如何获取从另一个函数struct返回的 a的值Result?下面举例。

#[derive(Debug)]
pub struct Keypair(ed25519_dalek::Keypair);

pub fn keypair_from_seed(seed: &[u8]) -> Result<Keypair, Box<dyn error::Error>> {
    let dalek_keypair = ed25519_dalek::Keypair { secret, public };
    Ok(Keypair(dalek_keypair))
}
Run Code Online (Sandbox Code Playgroud)
fn main(){
  //here seed_bytes is mnemonics
  let sk = keypair_from_seed(&seed_bytes);
  //sk contains the secret key and public key, i want to extract it different secret key & public key
}
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
2
解决办法
1849
查看次数

如何在Rust中将String转换为整数?

从stdin读取输入会产生一个String,但是如何将其转换为整数?

use std::io;

fn main() {
    println!("Type something");

    let mut input = String::new();

    io::stdin()
        .read_line(&mut input)
        .expect("Failed to read line");

    println!("{}", input);
}
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
5786
查看次数

如何从字符串解析i64?

显然,有些东西发生了变化,因此我无法从字符串中解析i64:

use std::from_str::FromStr;

let tree1: BTreeMap<String, String> = //....
let my_i64: i64 = from_str(tree1.get("key1").unwrap().as_slice()).unwrap();
Run Code Online (Sandbox Code Playgroud)

错误:

16:27 error: unresolved import `std::from_str::FromStr`. Could not find `from_str` in `std`

$ rustc -V
rustc 1.0.0-nightly (4be79d6ac 2015-01-23 16:08:14 +0000)
Run Code Online (Sandbox Code Playgroud)

rust

4
推荐指数
1
解决办法
9488
查看次数

将字符串解析为 f64 和 i64

我似乎无法在官方文档中挖掘任何内容。我可以看到有多种旧方法可以做到这一点(int::parse_bytesf32::from_string),但这两种方法都已弃用。在 1.0 中执行此操作的方式是什么?

parsing numbers rust

4
推荐指数
1
解决办法
5291
查看次数

在将字符串解析为数字时,为什么会出现"在此上下文中必须知道此值的类型"的错误?

我不是想编写复杂的代码,我只是想了解这里发生了什么(或不是什么).我检查了其他问题,但他们都有复杂的情况,我认为这种情况到目前为止最简单.

我有以下代码:

let one_step: f32 = "4.0".parse().unwrap();
let extra_step: u32 = one_step as u32;

println!("{:?}", extra_step);
Run Code Online (Sandbox Code Playgroud)

我看到它的方式,我们有一个&str,我们解析它f32并解开它.然后我们将其转换f32为a u32.

为什么我不能这样做?实际上,这不是同一件事吗?

let single_step: u32 = "4.0".parse().unwrap() as u32;

println!("{:?}", single_step);
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行此代码,我会收到此错误:

error[E0619]: the type of this value must be known in this context
 --> src/main.rs:6:27
  |
6 |     let single_step: u32 = "4.0".parse().unwrap() as u32;
  |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)

看起来有些东西要求我们将操作分成两个块.

types rust

4
推荐指数
1
解决办法
111
查看次数

如何从 Option 中提取数据以供独立使用?

有没有办法“拉”出数据Option?我有一个 API 调用返回Some(HashMap). 我想使用HashMap它,就好像它不在里面一样Some并使用数据。

根据我所阅读的内容,它看起来Some(...)仅适用于匹配比较和一些内置函数。

从 crate 文档中提取的简单 API 调用:

use std::collections::HashMap;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let resp = reqwest::blocking::get("https://httpbin.org/ip")?
        .json::<HashMap<String, String>>()?;
    println!("{:#?}", resp.get("origin"));
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

结果:

Some("75.69.138.107")
Run Code Online (Sandbox Code Playgroud)

enums pattern-matching optional rust

3
推荐指数
3
解决办法
721
查看次数

Rust:无法将整数解析为字符串,ParseIntError

我刚开始尝试 Rust,所以我实现了 Book 的“猜谜游戏”的修改版本。每次我尝试输入数字时,程序都无法从字符串解析整数:

Guess the number!
Input your guess:
50
You guessed 50
 (4 bytes)!
thread 'main' panicked at 'Wrong number format!: ParseIntError { kind: InvalidDigit }', src\libcore\result.rs:997:5
note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
error: process didn't exit successfully: `target\release\experiment.exe` (exit code: 101)
Run Code Online (Sandbox Code Playgroud)

下面应用了代码。

我已经尝试过其他整数类型。

use std::io;
use rand::Rng;

fn main() {
    println!("Guess the number!\nInput your guess:");

    let mut guess = String::new();

    let secnum = rand::thread_rng().gen_range(1,101);

    'br: loop { 
        match io::stdin().read_line(&mut guess) {
            Ok(okay) => …
Run Code Online (Sandbox Code Playgroud)

string integer rust

2
推荐指数
1
解决办法
2365
查看次数

从输入中读取整数并将其分配给变量

我一直试图找到一种在 Rust 中读取变量的简单方法,但到目前为止还没有任何运气。Rust Book 中的所有示例都处理字符串 AFAIK,我找不到任何有关整数或浮点数的内容。

integer input rust

0
推荐指数
1
解决办法
1398
查看次数

读取和计算商数时出错

我是一个Rust新手并试图读取两个数字并计算他们的商:

use std::io;

enum Option<T> {
    None,
    Some(T),
}

fn safe_div(n: i32, d: i32) -> Option<i32> {
    if d == 0 {
        return None;
    }
    return Some(n / d);
}

fn main() {
    println!("Please input your numerator.");
    let mut numerator = String::new();
    io::stdin()
        .read_line(&mut numerator)
        .expect("Failed to read line");
    println!("Please input your denominator.");
    let mut denominator = String::new();
    io::stdin()
        .read_line(&mut denominator)
        .expect("Failed to read line");
    match safe_div(numerator, denominator) {
        None => println!("Can't divide by zero!"),
        Some(v) => println!("Quotient is {}", …
Run Code Online (Sandbox Code Playgroud)

types rust

0
推荐指数
1
解决办法
145
查看次数

标签 统计

rust ×11

integer ×2

parsing ×2

types ×2

enums ×1

hex ×1

input ×1

numbers ×1

optional ×1

pattern-matching ×1

string ×1