Android Renderscript 字符串函数?
Posted
技术标签:
【中文标题】Android Renderscript 字符串函数?【英文标题】:Android Renderscript String Functions? 【发布时间】:2011-06-03 03:23:37 【问题描述】:Renderscript 中有字符串函数吗?比如 vsprintf?
具体来说,我想将浮点数转换为字符串。我必须从头开始写吗?
谢谢!
【问题讨论】:
【参考方案1】:抱歉,这里有一个更好的。它也适用于整数,但它们添加了“.000”。
char stringBuffer[50];
static const int MAX_STRING_LENGTH = sizeof(stringBuffer) - 1;
void drawFloat(float value, int x, int y)
int index = 0;
int scaledValue = (int)(value * 1000);
index = MAX_STRING_LENGTH;
stringBuffer[index] = 0;
while(scaledValue > 0 || index > MAX_STRING_LENGTH - 4)
index--;
if(index == MAX_STRING_LENGTH - 4)
stringBuffer[index--] = '.';
int digitValue = scaledValue % 10;
stringBuffer[index] = '0' + digitValue;
scaledValue /= 10;
if(value < 0)
stringBuffer[index--] = '-';
rsgDrawText(&stringBuffer[index], x - 10, y + 5);
【讨论】:
【参考方案2】:找不到简单的方法所以...
void drawInteger(int value, int x, int y)
char text[50] = "0";
int index = 0;
if(value != 0)
index = 49;
text[index] = 0;
while(value > 0)
index--;
int digitValue = value % 10;
text[index] = '0' + digitValue;
value /= 10;
if(value < 0)
text[index--] = '-';
rsgDrawText(&text[index], x - 10, y + 5);
void drawFloat(float value, int x, int y)
char text[50] = "0.000";
int index = 0;
if(value != 0)
int integerPart = (int)(value * 1000);
index = 49;
text[index] = 0;
while(integerPart > 0)
index--;
if(index == 45)
text[index--] = '.';
int digitValue = integerPart % 10;
text[index] = '0' + digitValue;
integerPart /= 10;
if(value < 0)
text[index--] = '-';
rsgDrawText(&text[index], x - 10, y + 5);
【讨论】:
而且它可能会更有效率。我正在那里分配一个缓冲区。以上是关于Android Renderscript 字符串函数?的主要内容,如果未能解决你的问题,请参考以下文章
Android RenderScriptRenderScript 简介 ③ ( RenderScript 发布和运行 | RenderScript 脚本 )
Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果
Android RenderScript+ScriptIntrinsicBlur 或 RenderEffect(android 12) 实现 图片模糊效果
Android、Renderscript、ScriptIntrinsicBlur、导入 libRSSuport.so 和 librsjni.so