如何增加/减少unsigned char类型?
-
20-09-2019 - |
题
我试图通过在数值上增加/通过一定量的减小值来修改像素值(每个通道RGBA 8位)。我怎样才能做到这一点在Objective-C或C?下面的代码生成一个 “的错误:EXC_BAD_ACCESS 强>”。每次
// Try to Increase RED by 50
for(int i = 0; i < myLength; i += 4) {
//NSLog prints the values FINE as integers
NSLog(@"(%i/%i/%i)", rawData[i], rawData[i+1], rawData[i+2]);
//But for some reason I cannot do this
rawData[i]+=50;
}
和甚至
// Try to set RED to 50
for(int i = 0; i < myLength; i += 4) {
//I cannot even do this...
unsigned char newVal = 50;
rawData[i] = 50;
}
<强>旁注:强> RAWDATA为unsigned char型的数据缓冲器
解决方案
这有可能是你超越你分配的缓冲区的结尾,这就是为什么你要访问冲突。这很可能意味着你的数学是错误的配置,或者您RAWDATA指针类型错误的。
如果你正在访问加载的UIImage的原始数据,它可能被映射到内存为只读。你需要将数据复制到您分配的,最有可能的一个缓冲。
其他提示
嗯......什么是rawdata
?也许这是你不能修改const
类型?
不隶属于 StackOverflow