UE4常用数据类型转换

这篇博客介绍了在Unreal Engine 4(UE4)中,如何进行FString(字符串)与FName(名称)、FText(文本)、int32(整数)、float(浮点数)、bool(布尔)、TArray(字节数组)以及枚举之间的相互转换。还涉及到字符串到MD5和SHA1的哈希计算。这些内容对于UE4的编程和数据处理至关重要。
摘要由CSDN通过智能技术生成
{
		//FString To FName
		FString Str = TEXT("TestString");
		FName Name = FName(*Str);
		//FName To FString
		FString TargetFString = Name.ToString();
	}

	{
		//std::string to FString
		std::string stdStr = "TestString";
		FString MyStr(stdStr.c_str());

		//FString To char*
		char* c = TCHAR_TO_UTF8(*MyStr);
		// FString to std::string 
		std::string TargetString(c);
	
	}

	{
		//FString to Int32
		FString Str = TEXT("TestString");
		int32 i = FCString::Atoi(*Str);
		//or
		 i = atoi(TCHAR_TO_UTF8(*Str));

		// FString to float
		int32 f = FCString::Atof(*Str);
		//or
		f = atof(TCHAR_TO_UTF8(*Str));

		//FString To bool
		bool bNewbool = Str.ToBool();
		
		// Int32 to FString
		FString TStr = FString::FromInt(123);
		// float to FString
		FString TStr1 = FString::SanitizeFloat(36.23f);
		// bool to FString
		int32 b = true;
		FString Out= b ? TEXT("true"): TEXT("false");		
	}
	{
		//FString to TCHAR*
		FString Str1(TEXT("TestString"));
		const TCHAR* MyTChar = *Str1;

		//FString to FText
		FText MyText = FText::FromString(Str1);

		//FText to FName
		FName Name = FName(*MyText.ToString());

		//FName to FText
		FText MyText1 = FText::FromName(Name);

	}
	{
		//FString To TArray<uint8>
		
		FString Str = "Hello UE4";//原数据
		
		TArray<uint8> outDataArray;//目标数据

		TCHAR* CharData = Str.GetCharArray().GetData();
		int32 Len = FCString::Strlen(CharData);
		for (int i = 0; i < Len; i++)
		{
			uint8* dst = (uint8*)TCHAR_TO_UTF8(CharData);		
			CharData++;
			outDataArray.Add(*dst);
		}
		//FString To TArray<uint8>
		FBase64::Decode(Str, outDataArray);

		//TArray<uint8> To FString
		const std::string cstr(reinterpret_cast<const char*>(outDataArray.GetData()), outDataArray.Num());
		FString  MyStr1(cstr.c_str());

		//TArray<uint8> To FString
		FString DestStr = FBase64::Encode(outDataArray);


	}
	{
		//枚举转字符串
		enum ETempEnum
		{
			One,
			Two,
			Three,
		};
		{
			//通过枚举类型的名字找到对应枚举类型的COD class object defalut
			const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ETempEnum"), true);
			if (EnumPtr)
			{
				FString str = EnumPtr->GetNameStringByIndex(ETempEnum::Two);
			}
		}
		//字符串转枚举
		{	
			//通过枚举类型的名字找到对应枚举类型的COD class object defalut
			const UEnum* EnumPtr = FindObject<UEnum>(ANY_PACKAGE, TEXT("ETempEnum"), true);
			if (EnumPtr)
			{
				ETempEnum OutEnum= (ETempEnum)EnumPtr->GetIndexByNameString(TEXT("Three"));
			}
		}
	}
	//额外补充
	{
		//FString To Md5
		FString String("sdsafasfasf");
		FMD5::HashAnsiString(*String);

		// FString To Sha1
		FSHA1 Sha1Gen;
		Sha1Gen.Update((unsigned char*)TCHAR_TO_ANSI(*String), FCString::Strlen(*String));
		Sha1Gen.Final();

		FString Sha1String;
		for (int32 i = 0; i < 20; i++)
		{
			Sha1String += FString::Printf(TEXT("%02x"), Sha1Gen.m_digest[i]);
		}

	}

摘自:https://space.bilibili.com/43501343?spm_id_from=333.788.b_765f7570696e666f.2

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UE4中有多种数据类型转换的方法,以下是一些常见的类型转换示例: 1. FString转换为FName: 使用FName构造函数将FString转换为FName对象,例如: ``` FString MyString = TEXT("MyName"); FName MyName = FName(*MyString); ``` 2. FString转换为FText: 使用FText构造函数将FString转换为FText对象,例如: ``` FString MyString = TEXT("Hello World"); FText MyText = FText::FromString(MyString); ``` 3. FString转换为int32: 使用FCString::Atoi或FCString::Strtoi将FString转换为int32,例如: ``` FString MyString = TEXT("123"); int32 MyInt = FCString::Atoi(*MyString); ``` 4. FString转换为float: 使用FCString::Atof将FString转换为float,例如: ``` FString MyString = TEXT("3.14"); float MyFloat = FCString::Atof(*MyString); ``` 5. FString转换为std::string: 使用TCHAR_TO_UTF8宏将FString转换为std::string,例如: ``` FString MyString = TEXT("Hello"); std::string MyStdString(TCHAR_TO_UTF8(*MyString)); ``` 6. FString转换为char*: 使用TCHAR_TO_ANSI宏将FString转换为char*,例如: ``` FString MyString = TEXT("Hello"); char* MyChar = TCHAR_TO_ANSI(*MyString); ``` 7. FString转换为TCHAR*: 使用*运算符将FString转换为TCHAR*,例如: ``` FString MyString = TEXT("Hello"); TCHAR* MyTChar = *MyString; ``` 这些是UE4中常见的类型转换方法,根据具体的需求选择适合的转换方式即可。\[3\] #### 引用[.reference_title] - *1* *2* [UE4 C++:基本数据类型、字符串处理及转换](https://blog.csdn.net/Jason6620/article/details/126503682)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [UE 数据类型转换](https://blog.csdn.net/weixin_44070137/article/details/127616570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值