I’m pretty sure they only come up as 0 because you’re using FString::FromInt to output them as strings.
The way you have it right now is that each of the Normal and ImpactNormal components X, Y and Z (which are floats) will be converted to int32. Since the vectors are normalized it is very rare that any of the components is actually == 1.0f leading to the truncation you’re describing.
Try to replace the GEngine->AddOnScreenDebugMessage lines with the following
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf( TEXT("Slope Normal: %s"), *(HitResult->Normal.ToString()) ));
GEngine->AddOnScreenDebugMessage(-1, 5.0f, FColor::Green, FString::Printf( TEXT("Slope Impact Normal: %s"), *(HitResult->ImpactNormal.ToString()) ));