??xml version="1.0" encoding="utf-8" standalone="yes"?>
----------------------------------------
System.out.println(123456.789);
----------------------------------------
会在Console看到输出
----------------------------------------
123456.789
----------------------------------------
那么如何得到?23Q?56.789”这U格式化的输出呢Q?
q里需要用到java.text.Formatq个cR?
不仅是数字,它还提供了货币值和癑ֈ数的格式化输出,例如0.58的百分数输出形式?8%?
要获得本地的默认格式Q可以用下列Ҏ获得Q?
NumberFormat.getNumberInstance()
NumberFormat.getCurrencyInstance()
NumberFormat.getOpercentInstance()
而要获得某个国家或地区的具体格式Q可以用参数Local.XXX。例如,Local.GERMANYQLocal.UK?
范例Q?
---------------------------------------------------------------
import java.text.NumberFormat;
import java.util.Locale;
public class FormatTest{
public static void main(String args[]){
//不用格式化输出敊W?br /> double d = 10000.0/3.0;
System.out.println("无格式化输出Q? + d);
//使用本地默认格式输出?
NumberFormat numberFormat = NumberFormat.getNumberInstanc();
//numberFormat.setMaximumFractionDigits(4);
//numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println("本地默认格式输出敎ͼ" + numberString);
//使用本地默认格式输出货币?
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
System.out.println("本地默认格式输出货币|" + currencyFormat.format(d));
//使用本地默认格式输出癑ֈ?
NumberFormat percentFormat = NumberFormat.getPercentInstance();
System.out.println("本地默认格式输出癑ֈ敎ͼ" + percentFormat.format(d));
//在不同的国家各地区数字表C的格式也有区别。例如d?
//使用德国的格式化输出?
NumberFormat numberFormatG = NumberFormat.getNumberInstance(Local.GERMANY);
System.out.println("德国数字输出形式Q? + numberFormatG.format(d));
//使用德国货币输出形式
NumberFormat currencyFormatG = NumberFormat.getCurrencyInstance(Local.GERMANY);
System.out.println("德国货币输出形式Q? + currencyFormatG.format(d));
//使用国货币输出形式
NumberFormat currencyFormatA = NumberFormat.getCurrencyInstance(Local.US);
System.out.println("国货币输出形式Q? + currencyFormatG.format(d));
//使用德国癑ֈ数输出Ş式?br /> NumberFormat percentFormatG = NumberFormat.getPercentInstance(Local.GERMANY);
System.out.println("德国癑ֈ数输出Ş式:" + percentFormatG .format(d));
System.exit(0);
}
}
---------------------------------------------------------------------------------
E序输出
---------------------------------------
<!--[if !vml]--><!--[endif]-->
---------------------------------------
׃Ƨ元W号无法在此Console输出Q所以显C?
可以指定昄的最多(或最)整数位和数位。如
---------------------------------------
double d = 10000.0/3.0;
NumberFormat numberFormat = NumberFormat.getNumberInstance();
numberFormat.setMaximumFractionDigits(4);
numberFormat.setMinimumIntegerDigits(6);
String numberString = numberFormat.format(d);
System.out.println(numberString);
---------------------------------------
输出Q?
---------------------------------------
003Q?33.3333
---------------------------------------
整数位不够的补零Q小数截去部分四舍五入?
也可以利用NumberFormat的一个子cDecimalFormat来指定输出格式?
---------------------------------------
DecimalFormat decimalFormat = new DecimalFormat("######.0000");
String s = decimalFormat.format(d);
---------------------------------------
和前面一P昄6个整C?个小C?
下面Ҏ式化的数字进行解析?
---------------------------------------
import java.util.Locale;
import java.text.NumberFormat;
import java.text.ParseException;
public class ParseFormat{
public static void main(String args[]){
//本地格式的解?
NumberFormat numberFormat1 = NumberFormat.getNumberInstance();
Number numb1 = null;
try
{
numb1 = numberFormat1.parse("33,333.33");
}
catch(ParseException e1)
{
System.err.println(e1);
}
System.out.println(number1);
//以d国格式解析?br /> NumberFormat numberFormat2 = NumberFormat.getNumberInstance(Locale.GERMANY);
Number numb2 = null;
try
{
numb2 = numberFormat2.parse("33,333.33");
}
catch(ParseException e2)
{
System.err.println(e2);
}
System.out.println(number2);
System.exit(0);
}
}
---------------------------------
E序输出Q?
---------------------------------
33333.33 33.333
--------------------------------
同样一U格?3,333.33Q有人将之理解ؓ33333.33Q也有h认ؓ它是33.333QY件国际化的重要性可见一斑?
]]>
?/p>
BMP(Bitmap-File) 囑Ş文g是Windows采用的图形文件格式,在Windows环境下运行的所有图象处理Y仉支持BMP图象文g格式。Windowspȝ内部各图像绘 制操作都是以BMP为基的。Windows 3.0以前的BMP图文件格式与昄讑֤有关Q因此把q种BMP图象文g格式UCؓ讑֤相关位图DDB(device-dependent bitmap)文g格式。Windows 3.0以后的BMP图象文g与显C备无养I因此把这UBMP图象文g格式UCؓ讑֤无关位图DIB(device-independent bitmap) 格式Q注QWindows 3.0以后Q在pȝ中仍然存在DDB位图Q象BitBlt()q种函数是ZDDB位图的,只不q如果你惛_囑փ以BMP格式保存到磁盘文件中Ӟ微Y 极力推荐你以DIB格式保存Q,目的是ؓ了让Windows能够在Q何类型的昄讑֤上显C所存储的图象。BMP位图文g默认的文件扩展名是BMP或? bmpQ有时它也会?DIB?RLE作扩展名Q?
6.1.2 文gl构
位图文g可看成由4个部分组成:位图文g?bitmap-file header)、位图信息头(bitmap-information header)、彩色表(color table)和定义位囄字节阵列Q它h如下所C的形式?
位图文g的组?/font> |
l构名称 |
W号 |
位图文g?bitmap-file header) | BITMAPFILEHEADER | bmfh |
位图信息?bitmap-information header) | BITMAPINFOHEADER | bmih |
彩色?color table) | RGBQUAD | aColors[] |
图象数据阵列字节 | BYTE | aBitmapBits[] |
位图文gl构可综合在?-01中?
?1 位图文gl构内容摘要
偏移?/font> |
域的名称 |
大小 |
内容 |
|||||||||
图象文g ?/font> |
0000h | 文g标识 | 2 bytes |
两字节的内容用来识别位图的类型:
‘BM?Q?Windows 3.1x, 95, NT, ?/font> ‘BA?QOS/2 Bitmap Array ‘CI?QOS/2 Color Icon ‘CP?QOS/2 Color Pointer ‘IC?Q?OS/2 Icon ‘PT?QOS/2 Pointer 注:因ؓOS/2pȝq没有被普及开Q所以在~程Ӟ你只需判断W一个标识“BM”就行?/font> |
||||||||
0002h | File Size | 1 dword | 用字节表C的整个文g的大?/font> | |||||||||
0006h | Reserved | 1 dword | 保留Q必设|ؓ0 | |||||||||
000Ah | Bitmap Data Offset | 1 dword | 从文件开始到位图数据开始之间的数据(bitmap data)之间的偏U量 | |||||||||
000Eh | Bitmap Header Size | 1 dword |
位图信息?Bitmap Info Header)的长度,用来描述位图的颜艌Ӏ压~方法等。下面的长度表示Q?/font>
28h - Windows 3.1x, 95, NT, ?/font> 0Ch - OS/2 1.x F0h - OS/2 2.x 注: 在Windows95?8?000{操作系l中Q位图信息头的长度ƈ不一定是28hQ因为微软已l制定出了新的BMP文g格式Q其中的信息头结构变? 比较大,长度加长。所以最好不要直接用常?8hQ而是应该从具体的文g中读取这个倹{这h能确保程序的兼容性?/font> |
|||||||||
0012h | Width | 1 dword | 位图的宽度,以象素ؓ单位 | |||||||||
0016h | Height | 1 dword | 位图的高度,以象素ؓ单位 | |||||||||
001Ah | Planes | 1 word | 位图的位面数Q注Q该值将L1Q?/font> | |||||||||
图象 信息 ?/font>
|
001Ch | Bits Per Pixel | 1 word |
每个象素的位?/font>
1 - 单色位图Q实际上可有两种颜色Q缺省情况下是黑色和白色。你可以自己定义q两U颜Ԍ 4 - 16 色位?/font> 8 - 256 色位?/font> 16 - 16bit 高彩色位?/font> 24 - 24bit 真彩色位?/font> 32 - 32bit 增强型真彩色位图 |
||||||||
001Eh | Compression | 1 dword |
压羃说明Q?/font>
0 - 不压~?(使用BI_RGB表示) 1 - RLE 8-使用8位RLE压羃方式(用BI_RLE8表示) 2 - RLE 4-使用4位RLE压羃方式(用BI_RLE4表示) 3 - Bitfields-位域存放方式(用BI_BITFIELDS表示) |
|||||||||
0022h | Bitmap Data Size | 1 dword | 用字节数表示的位图数据的大小。该数必L4的倍数 | |||||||||
0026h | HResolution | 1 dword | 用象?cC的水^分L?/font> | |||||||||
002Ah | VResolution | 1 dword | 用象?cC的垂直分L?/font> | |||||||||
002Eh | Colors | 1 dword | 位图使用的颜色数。如8-比特/象素表示?00h或?256. | |||||||||
0032h | Important Colors | 1 dword | 指定重要的颜色数。当该域的值等于颜色数Ӟ或者等?ӞQ表C所有颜色都一样重?/font> | |||||||||
调色板数?/font> | ҎBMP版本的不同而不?/font> | Palette | N * 4 byte |
调色板规范。对于调色板中的每个表项Q这4个字节用下述Ҏ来描qRGB的|
|
||||||||
图象数据 | ҎBMP版本及调色板寸的不同而不?/font> | Bitmap Data | xxx bytes | 该域的大取决于压羃Ҏ及图像的寸和图像的位深度,它包含所有的位图数据字节Q这些数据可能是彩色调色板的索引P也可能是实际的RGB|q将Ҏ囑փ信息头中的位深度值来军_?/font> |
构g详解
1. 位图文g?/font>
位图文g头包含有关于文gcd、文件大、存放位|等信息Q在Windows 3.0以上版本的位图文件中用BITMAPFILEHEADERl构来定义:
typedef struct tagBITMAPFILEHEADER { /* bmfh */
UINT bfType;} BITMAPFILEHEADER;
DWORD bfSize;
UINT bfReserved1;
UINT bfReserved2;
DWORD bfOffBits;
其中Q?/font>
|
|
|
|
|
|
|
|
|
|
2. 位图信息?/strong>
? 图信息用BITMAPINFOl构来定义,它由位图信息?bitmap-information header)和彩色表(color table)l成Q前者用BITMAPINFOHEADERl构定义Q后者用RGBQUADl构定义。BITMAPINFOl构h如下形式Q?/font>
typedef struct tagBITMAPINFO { /* bmi */
BITMAPINFOHEADER bmiHeader;} BITMAPINFO;
RGBQUAD bmiColors[1];
其中Q?/font>
|
|
|
|
BITMAPINFOHEADERl构包含有位图文件的大小、压~类型和颜色格式Q其l构定义为:
typedef struct tagBITMAPINFOHEADER { /* bmih */
DWORD biSize;} BITMAPINFOHEADER;
LONG biWidth;
LONG biHeight;
WORD biPlanes;
WORD biBitCount;
DWORD biCompression;
DWORD biSizeImage;
LONG biXPelsPerMeter;
LONG biYPelsPerMeter;
DWORD biClrUsed;
DWORD biClrImportant;
其中Q?/font>
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
说明图象数据压羃的类型。其值可以是下述g一Q?/font>
|
||||||||
|
说明图象的大,以字节ؓ单位。当用BI_RGB格式Ӟ可设|ؓ0 | ||||||||
|
说明水^分L率,用象?cC?/font> | ||||||||
|
说明垂直分L率,用象?cC?/font> | ||||||||
|
说明位图实际使用的彩色表中的颜色索引敎ͼ设ؓ0的话Q则说明使用所有调色板) | ||||||||
|
|
现就BITMAPINFOHEADERl构作如下说明:
(1) 彩色表的定位
应用E序可用存储在biSize成员中的信息来查扑֜BITMAPINFOl构中的彩色表,如下所C:
pColor = ((LPSTR) pBitmapInfo + (WORD) (pBitmapInfo->bmiHeader.biSize))
(2) biBitCount
biBitCount=1 表示位图最多有两种颜色Q缺省情况下是黑色和白色Q你也可以自己定义这两种颜色。图像信息头装调色板中将有两个调色板,UCؓ索引0和烦?。图象数据阵列中的每一位表CZ个象素。如果一个位?Q显C时׃用烦?的RGB|如果位是1Q则使用索引1的RGB倹{?/font>
biBitCount=4 ? CZ图最多有16U颜艌Ӏ每个象素用4位表C,q用q?位作为彩色表的表Ҏ查找该象素的颜色。例如,如果位图中的W一个字节ؓ0x1FQ它表示有两个象 素,W一象素的颜色就在彩色表的第2表项中查找,而第二个象素的颜色就在彩色表的第16表项中查找。此Ӟ调色板中~省情况下会?6个RGBV对应于 索引0到烦?5?/font>
biBitCount=8 表示位图最多有256U颜艌Ӏ每个象素用8位表C,q用q?位作为彩色表的表Ҏ查找该象素的颜色。例如,如果位图中的W一个字节ؓ0x1FQ这个象素的颜色在彩色表的W?2表项中查找。此Ӟ~省情况下,调色板中会有256个RGB,对应于烦?到烦?55?/font>
biBitCount=16 表示位图最多有216U? 颜色。每个色素用16位(2个字节)表示。这U格式叫作高彩色Q或叫增强型16位色Q或64K艌Ӏ它的情冉|较复杂,当biCompression成员? 值是BI_RGBӞ它没有调色板?6位中Q最低的5位表C色分量,中间?位表C绿色分量,高的5位表C红色分量,一共占用了15位,最高的一位保 留,设ؓ0。这U格式也被称?55 16位位图。如果biCompression成员的值是BI_BITFIELDSQ那么情况就复杂了,首先是原来调色板的位|被三个DWORD变量占据Q? UCؓU、绿、蓝掩码。分别用于描q红、绿、蓝分量?6位中所占的位置。在Windows 95Q或98Q中Q系l可接受两种格式的位域:555?65Q在555格式下,U、绿、蓝的掩码分别是Q?x7C00?x03E0?x001FQ? ?65格式下,它们则分别ؓQ?xF800?x07E0?x001F。你在读取一个像素之后,可以分别用掩码“与”上像素|从而提取出惌的颜? 分量Q当然还要再l过适当的左右移操作Q。在NTpȝ中,则没有格式限Ӟ只不q要求掩码之间不能有重叠。(注:q种格式的图像用v来是比较ȝ的,? q因为它的显C效果接q于真彩Q而图像数据又比真彩图像小的多Q所以,它更多的被用于游戏YӞ?/font>
biBitCount=24 表示位图最多有224U颜艌Ӏ这U位图没有调色板QbmiColors成员寸?Q,在位数组中,?个字节代表一个象素,分别对应于颜色R、G、B?/font>
biBitCount=32 表示位图最多有232U? 颜色。这U位囄l构?6位位囄构非常类|当biCompression成员的值是BI_RGBӞ它也没有调色板,32位中?4位用于存? RGB|序是:最高位—保留,U?位、绿8位、蓝8位。这U格式也被成?88 32位图。如? biCompression成员的值是BI_BITFIELDSӞ原来调色板的位置被三个DWORD变量占据Q成为红、绿、蓝掩码Q分别用于描q红? lѝ蓝分量?2位中所占的位置。在Windows 95(or 98)中,pȝ只接?88格式Q也是说三个掩码的值将只能是:0xFF0000?xFF00?xFF。而在NTpȝ中,你只要注意掩码之间不 生重叠就行。(注:q种囑փ格式比较规整Q因为它是DWORD寚w的,所以在内存中进行图像处理时可进行汇~的代码优化(单)Q?/font>
(3) ClrUsed
BITMAPINFOHEADER l构中的成员ClrUsed指定实际使用的颜色数目。如果ClrUsed讄?Q位图用的颜色数目q于biBitCount成员中的数目。请注意Q? 如果ClrUsed的g是可用颜色的最大值或不是0Q则在编E时应该注意调色板尺寸的计算Q比如在4位位图中Q调色板的缺省尺寸应该是 16Qsizeof(RGBQUAD)Q但是,如果ClrUsed的g?6或者不?Q那么调色板的尺寸就应该是ClrUsedQsizeof (RGBQUAD)?/font>
(4) 图象数据压羃
?BI_RLE8Q?/strong>每个象素?比特的RLE压羃~码Q可使用~码方式和绝Ҏ式中的Q何一U进行压~,q两U方式可在同一q图中的M地方使用?/font>
~码方式Q由2个字节组成,W一个字节指定用相同颜色的象素数目Q第二个字节指定使用的颜色烦引。此外,q个字节对中的第一个字节可讄?Q联合用第二个字节的DC:
![]() |
W二个字节的gؓ0Q行的结束? |
![]() |
W二个字节的gؓ1Q图象结束? |
![]() |
W二个字节的gؓ2Q其后的两个字节表示下一个象素从当前开始的水^和垂直位|的偏移量? |
l对方式Q? W一个字节设|ؓ0Q而第二个字节讄?x03?xFF之间的一个倹{在q种方式中,W二个字节表C在这个字节后面的字节敎ͼ每个字节包含单个象素 的颜色烦引。压~数据格式需要字边界(word boundary)寚w。下面的例子是用16q制表示?-位压~图象数据:
03 04 05 06 00 03 45 56 67 00 02 78 00 02 05 01 02 78 00 00 09 1E 00 01
q些压羃数据可解释ؓ Q?/font>
压羃数据 |
扩展数据 |
03 04 | 04 04 04 |
05 06 | 06 06 06 06 06 |
00 03 45 56 67 00 | 45 56 67 |
02 78 | 78 78 |
00 02 05 01 | 从当前位|右U?个位|后向下UM?/font> |
02 78 | 78 78 |
00 00 | 行结?/font> |
09 1E | 1E 1E 1E 1E 1E 1E 1E 1E 1E |
00 01 | RLE~码图象l束 |
?BI_RLE4Q?/font>
~码方式Q由2个字节组成,W一个字节指定象素数目,W二个字节包含两U颜色烦引,一个在?位,另一个在?位。第一个象素用高4位的颜色索引Q第二个使用?位的颜色索引Q第3个用高4位的颜色索引Q依此类推?/font>
l对方式Q这个字节对中的W一个字节设|ؓ0Q第二个字节包含有颜色烦引数Q其后箋字节包含有颜色烦引,颜色索引存放在该字节的高、低4位中Q一个颜色烦引对应一个象素。此外,BI_RLE4也同栯合用第二个字节中的DC:
![]() |
W二个字节的gؓ0Q行的结束? |
![]() |
W二个字节的gؓ1Q图象结束? |
![]() |
W二个字节的gؓ2Q其后的两个字节表示下一个象素从当前开始的水^和垂直位|的偏移量? |
下面的例子是?6q制数表C的4-位压~图象数据:
03 04 05 06 00 06 45 56 67 00 04 78 00 02 05 01 04 78 00 00 09 1E 00 01
q些压羃数据可解释ؓ Q?/font>
压羃数据 |
扩展数据 |
03 04 | 0 4 0 |
05 06 | 0 6 0 6 0 |
00 06 45 56 67 00 | 4 5 5 6 6 7 |
04 78 | 7 8 7 8 |
00 02 05 01 | 从当前位|右U?个位|后向下UM?/font> |
04 78 | 7 8 7 8 |
00 00 | 行结?/font> |
09 1E | 1 E 1 E 1 E 1 E 1 |
00 01 | RLE图象l束 |
3. 彩色?/font>
? 色表包含的元素与位图所h的颜色数相同Q象素的颜色用RGBQUADl构来定义。对?4-位真彩色图象׃使用彩色表(同样也包?6位、和32位位 图)Q因Z图中的RGB值就代表了每个象素的颜色。彩色表中的颜色按颜色的重要性排序,q可以辅助显C驱动程序ؓ不能昄_多颜色数的显C备显C彩 色图象。RGBQUADl构描述由R、G、B相对强度l成的颜Ԍ定义如下Q?/font>
typedef struct tagRGBQUAD { /* rgbq */
BYTE rgbBlue;} RGBQUAD;
BYTE rgbGreen;
BYTE rgbRed;
BYTE rgbReserved;
其中Q?/font>
|
|
|
|
|
|
|
|
4. 位图数据
?
跟在彩色表之后的是图象数据字节阵列。图象的每一扫描行由表示图象象素的连l的字节l成Q每一行的字节数取决于图象的颜色数目和用象素表C的图象宽度。扫
描行是由底向上存储的Q这是_阵列中的W一个字节表CZ囑ַ下角的象素,而最后一个字节表CZ囑֏上角的象素。(只针对与倒向DIBQ如果是正向
DIBQ则扫描行是由顶向下存储的)Q倒向DIB的原点在囑փ的左下角Q而正向DIB的原点在囑փ的左上角。同Ӟ每一扫描行的字节数必需?的整倍数Q?
也就是DWORD寚w的。如果你想确保图像的扫描行DWORD寚wQ可使用下面的代码:
(((width*biBitCount)+31)>>5)<<2
5. 参考书?/strong>
《图象文件格?上、下)—Windows~程?br />《图像文件格式大全?br />《Programming Windows by Charles Petzold?br />
6. 相关站点
各种格式Qhttp://www.wotsit.org/
各种格式Qhttp://www.csdn.net/
位图格式Qhttp://www.cica.indiana.edu/graphics/image_specs/bmp.format.txt
〈完?br />YZ 2000-8-13 13:11
一.什么是DOMtab
DOMtab是一个用javascipt制作的通用可扩展的tab切换昄隐藏内容快的web控g?/p>
?怎么使用DOMtab
1.在页面的
区域加上
2.在页面主体的
部分加上
然后定义各个class的样式就可以了,你也可以加class定义样式Q但是代码的l构不能变化
3.更改javascript中控件的属?br />
tabClass:’domtab? //目标区域的class名称
listClass:’domtabs? // 列表菜单的class名称
activeClass:’active? // 菜单Ȁzȝ态下的class名称
contentElements:’div? // 循环内容区域的元素名U?br />
backToLinks:/#top/, // 讄q回剙的参?br />
printID:’domtabprintview? // 昄所有区域内容的id名称
showAllLinkText:’show all content? // 昄所有区域的文字名称
?增加向前向后按钮
1.在区域的起始class上多增加一个doprevnext
2.在页面里面加上下列代?/p>
3.javascript里面的属性定?/p>
?DOMtab中的样式控制
你可以强制的控制某一个元素的样式譬如昄和隐藏等{?/p>
?下蝲以及演示
下蝲DOMtab version 3.1415927
DOMtab演示
主要代码是q么多了Q是不是很简z呢Q当有很多个标签块的候,你就会发现这个方法的优势了,事实下,我们q可以简单修改一下javascript? 码,实现多个标签块在一个页面中的功能,接下来我准备l合Xml及Xslt写一个根据xml配置的多标签块的教程Q如果你觉得有什么更好的Ҏ可以实现Q? 请你与我联系Q让我们共同q步?/p>
附:
request.getContextPath() = /hboysgetResourceAsStream(String name){方法,使用相对于当前项目的classpath的相对\径来查找资源?/code>
getResourceAsStream(String name){方法,使用相对于当前项目的classpath的相对\径来查找资源?/code>