C语言中%d,%s,%x,%f,%.100f,%的意思

博客介绍了由“%”和格式字符组成的输出格式说明,其作用是将输出数据转换为指定格式。详细列举了d、o、x等格式字符,如%d用于整型输出,%f用于实数小数形式输出等,并说明了部分格式的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。 
格式字符有d,o,x,u,c,s,f,e,g等。 

%d整型输出,%ld长整型输出,
%o以八进制数形式输出整数,
%x以十六进制数形式输出整数,或输出字符串的地址。
%u以十进制数输出unsigned型数据(无符号数)。注意:%d与%u有无符号的数值范围,也就是极限的值,不然数值打印出来会有误。
%c用来输出一个字符,
%s用来输出一个字符串,
%f用来输出实数,以小数形式输出,默认情况下保留小数点6位。
%.100f用来输出实数,保留小数点100位。
%e以指数形式输出实数,
%g根据大小自动选f格式或e格式,且不输出无意义的零。
 

### C# 中实现栅格数据 2% 拉伸处理 为了在C#中对栅格数据进行2%拉伸处理,通常会先利用GDAL库读取栅格数据并将其转换为适合操作的数据结构。之后应用统计学上的百分位数计算来确定拉伸范围,并最终调整像素值以适应新的色彩映射。 #### 使用GDAL读取栅格数据 由于GDAL提供了强大的地理空间数据访问能力,在C#环境中可以通过`Gdal.Dataset.ReadRaster()`方法获取原始影像数据[^1]: ```csharp using OSGeo.GDAL; // 初始化GDAL环境变量 Gdal.AllRegister(); string filePath = "path_to_your_raster_file"; Dataset dataset = Gdal.Open(filePath, Access.GA_ReadOnly); int bandCount = dataset.RasterCount; double[] rasterData = new double[dataset.RasterXSize * dataset.RasterYSize]; for (int i = 0; i < bandCount; ++i) { Band band = dataset.GetRasterBand(i + 1); // 波段索引从1开始 band.ReadRaster(0, 0, dataset.RasterXSize, dataset.RasterYSize, rasterData, dataset.RasterXSize, dataset.RasterYSize, 0, 0); } ``` #### 计算2%分位数值 对于每一个波段,分别找出最小的2%和最大的98%对应的灰度级作为新颜色表中的最低最高亮度值。这一步骤涉及到数组排序或更高效的线性时间选择算法。 ```csharp Array.Sort(rasterData); int twoPercentIndex = Convert.ToInt32((rasterData.Length / 100f) * 2); int ninetyEightPercentIndex = Convert.ToInt32((rasterData.Length / 100f) * 98); float minVal = (float)rasterData[twoPercentIndex]; float maxVal = (float)rasterData[ninetyEightPercentIndex]; ``` #### 应用拉伸变换到原图像素上 最后按照比例缩放每个像素点至指定区间内(通常是0~255),从而完成整个过程。 ```csharp byte[] stretchedImageData = new byte[rasterData.Length]; Parallel.For(0, rasterData.Length, index => { float pixelValue = (float)rasterData[index]; if(pixelValue <= minVal || pixelValue >= maxVal){ stretchedImageData[index] = (pixelValue <= minVal ? Byte.MinValue : Byte.MaxValue); }else { stretchedImageData[index] = Convert.ToByte( ((pixelValue - minVal)/(maxVal-minVal)) * 255 ); } }); ``` 上述代码片段展示了如何基于给定的栅格文件路径加载数据、执行2%-98%直方图裁剪以及重新分配像素强度级别。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值