算法学习--整型转字符串

本文介绍了一种将整型数值转换为字符串的方法。通过不断取余并转换为ASCII码,最终加上正负号,实现整型到字符串的有效转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符串转整型的逆过程

代码思路:

1、输入一个整型数,判断整型数是否<0;

2、不断地对整型数做取余,得出余数与 ‘ 0 ’ 相加,然后整型除去10,就是说,把整型个十百千每一位都取出来,变成ASCII码的数字,存起来;

3、最后把正负号补上。


代码如下:

#include <string>
#include <iostream>
#include <algorithm>
#include <cassert>
using namespace std;
string intToString( int x )
{
    bool isNegative = x < 0;
    x = abs( x );
    
    string s;
    while( x != 0 )
    {
        s.push_back( '0' + x % 10 );
        x /= 10;
    }
    if( s.empty() ) 
    {
        return "0";
    }
    
    if( isNegative )
    {
        s.push_back( '-' );
    }
    
    reverse( s.begin(), s.end() );
    return s;
}
int main()
{
	int s1 = 2468;
	string s2 = "abcd";
	string s3 = "1357";
	string result = s3 + intToString(s1) + s2;
	
	cout << result << endl;
	system("pause");
	return 0;
}



### 实现 FP16 字符串换为整数 FP16(半精度浮点数)是一种 16 位浮点表示法,通常用于机器学习和其他计算密集型应用中。要将 FP16 格式的字符串换为整数,可以按照以下方法: #### 方法概述 首先解析 FP16 的二进制表示形式,然后将其换为 IEEE 754 半精度浮点数的标准格式,最后通过特定算法将其映射到相应的整数值。 #### 解析 FP16 字符串换为整数 假设输入是一个代表 FP16 浮点数的十六进制字符串,例如 `"0x3C00"` 表示十进制 `1.0`。以下是具体实现过程: ```cpp #include <iostream> #include <cstdint> #include <cstring> uint16_t hexStringToFp16(const std::string& hexStr) { uint16_t result; sscanf(hexStr.c_str(), "%hx", &result); // 将十六进制字符串换为无符号短整形[^2] return result; } int main() { const char* fp16HexString = "0x3C00"; uint16_t rawFp16Value = hexStringToFp16(fp16HexString); union Fp16ToInt { uint16_t u16; struct { unsigned int mantissa : 10; unsigned int exponent : 5; unsigned int sign : 1; } parts; Fp16ToInt(uint16_t value):u16(value){} operator int() const { if (parts.exponent == 0 && parts.mantissa != 0) { // Subnormal numbers double temp = pow(2, -14) * (double(parts.mantissa)) / 1024; return static_cast<int>(temp); } else if (parts.exponent == 0 && parts.mantissa == 0) { // Zero return 0; } else if (parts.exponent == 31) { // Infinity or NaN throw std::runtime_error("Invalid conversion"); } double expBias = parts.exponent - 15; double finalVal = pow(2, expBias) * ((1 << 10) + parts.mantissa) / 1024; return parts.sign ? -(static_cast<int>(finalVal)) : static_cast<int>(finalVal); } }; try { Fp16ToInt converter(rawFp16Value); std::cout << "Converted integer value is: " << int(converter) << "\n"; } catch (const std::exception& e) { std::cerr << "Error during conversion: " << e.what(); } return 0; } ``` 此代码片段展示了如何定义一个联合体来处理 FP16 数据结构,并提供了一种方式将这些数据换成普通的 C++ 整形变量。注意这里使用了异常机制来捕获可能发生的错误情况,比如遇到无穷大或非数字的情况时抛出异常[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值