画像を処理するために、0 と 1 の間の double と unsigned char の間で変換しようとしています。
私がこれまで行っていることは、フロートの配列があることです。
float array[length*4]
4 は RGBA カラー スキーム システムに由来します。次に、これを試します:
unsigned char newArray[4*length]
for (int i=0; i<4*length; i++){
newArray[i] = 255*array[i];
}
for (int i=0; i<10; i++){
printf("newArray: %d", newArray[i])
}
次の出力を取得します。
newArray: 32
newArray: 128
newArray: 131
newArray: 0
newArray: 173
newArray: 224
newArray: 56
newArray: 60
newArray: 125
newArray: 104
これが必要な場合:
should be: 0
should be: 75
should be: 140
should be: 255
should be: 1
should be: 79
should be: 143
should be: 255
should be: 1
should be: 84
should be: 150
should be: 255
他の方法を試しましたが、うまくいきません。
あなたへの私の質問は次のとおりです。フロートと符号なし文字の間で変換するにはどうすればよいですか?
編集:正しい出力を生成したコードは次のとおりです。
for (i=0; i<length; i++) {
[[data objectAtIndex:i] getRed:&red green:&green blue:&blue alpha:&alpha];
array[i][0] = 255*red;
array[i][1] = 255*green;
array[i][2] = 255*blue;
array[i][3] = 255*alpha;
}
for (i=0; i<10; i++) {
NSLog(@"before: %f, %f, %f, %f", array[i][0],array[i][1],array[i][2],array[i][3]);
}
、私がしたのは出力を編集することだけだったので、
1
2
3
4
の代わりに1,2,3,4
。