Saturday 9 December 2017

Cstring format binary options


Não há um especificador de conversão binário no glibc normalmente. É possível adicionar tipos de conversão personalizados à família de funções printf () da glibc. Consulte registerprintffunction para obter detalhes. Você poderia adicionar uma conversão b personalizada para seu próprio uso, se simplificar o código do aplicativo para tê-lo disponível. Aqui está um exemplo de como implementar um formato printf personalizado na glibc. Além disso, o que você está falando sobre w. r.t. A manipulação de resultados múltiplos de forma seqüencial não é a reentrada por si só, mas sim simplesmente a consequência de usar o que equivale a um objeto global para armazenar o resultado. A função não está sendo reentrada. Em C o idioma apropriado, ou pelo menos amplamente utilizado, para lidar com funções que armazenam seus resultados em um objeto global é copiar esses resultados imediatamente após obtê-los. Isto tem a grande vantagem de que, se apenas um resultado for necessário num momento, então nenhuma alocação adicional é necessária. Ndash Greg A. Woods Nov 27 12 em 0:51 Aqui we39re que vai ter que discordar. Não vejo como a adição de um símbolo de pré-processador discreto chega perto da nocividade de limitar os casos de uso severamente, tornando a interface propensa a erros, reservando armazenamento permanente para a duração do programa por um valor temporário e gerando código pior na maioria das plataformas modernas . Ndash R .. Nov 27 12 at 1:53 A família printf () só é capaz de imprimir na base 8, 10 e 16 usando os especificadores padrão diretamente. Sugerir a criação de uma função que converta o número em uma string por códigos de necessidades específicas. Todas as outras respostas até agora têm pelo menos uma dessas limitações. Use memória estática para o buffer de retorno. Isso limita o número de vezes que a função pode ser usada como um argumento para printf (). Alocar memória que requer o código de chamada para livre ponteiros. Exigir que o código de chamada forneça explicitamente um buffer adequado. Chame printf () diretamente. Isso obriga uma nova função para fprintf (). Sprintf (). Vsprintf (). Etc Use um intervalo reduzido de inteiros. O seguinte não tem nenhuma das limitações acima. Ele requer C99 ou posterior e uso de s. Ele usa um literal composto para fornecer o espaço de buffer. Ele não tem problemas com várias chamadas em um printf (). Estou usando VS 2005 edição padrão. Estou enviando e recebendo dados via RS232 usando um aplicativo que eu escrevi em C. Os dados são ascii, mas eu quero ver uma representação binária, a fim de analisá-lo completamente. Estou lendo os dados recebidos em uma caixa de texto. Existe um método padrão de converter os dados ascii na caixa de texto em sua representação binária Quinta-feira, 24 de agosto de 2006 11:12 Theres provavelmente um atalho para ele, mas isso funciona: include quotstdafx. hquot using namespace System int main ( ArrayltSystem :: String gt args) Cadeia s quotHello worldquot arrayltSystem :: Carregamento ch s-gtToCharArray () Sistema :: Texto :: StringBuilder sb gcnew Sistema :: Texto :: StringBuilder (3s-gtLength) para (int ix 0 ix lt s - gtLength ix) if (sb-gtLength gt 0) sb-gtAppend (quot quot) sb-gtAppend (Cadeia :: Formato (quot quot, (int) chix) Console :: WriteLine (quotHex valor quot, sb-gtToString )) Return 0 quinta-feira, 24 de agosto de 2006 12:14 PM Todas as respostas CStrings formato método ou sprinft permitirá que você formate um número como binário. Thursday, August 24, 2006 11:32 AM Você poderia me dar alguma ajuda sobre o código, por favor. Por exemplo, eu fiz um pequeno aplicativo de teste que aceita texto em textBox1 e, em seguida, em uma imprensa de botão copia o texto em textBox3. privado. System :: Void button1Click (Sistema :: Object sender, System :: EventArgs e) String myString gcnew String (txtBx1-gtText) Eu quero mostrar o texto em txtBx3 como uma representação binária de txtBx1. Você mencionou o método Format, então: O que iria no suporte Format Também - Eu não consigo encontrar sprintf. Eu estou usando o VS 2005. Theres provavelmente um atalho para ele, mas isso funciona: include quotstdafx. hquot using namespace System int main (arrayltSystem :: String gt args) Cadeia s quotHello worldquot arrayltSystem :: Carregamento ch s-gtToCharArray () Sistema :: Text :: StringBuilder sb gcnew Sistema :: Text :: StringBuilder (3s-gtLength) para (int ix 0 ix lt s-gtLength ix) se (sb-gtLength gt 0) sb-gtAppend (quot quot) sb-gtAppend (String :: Format (quot quot, (int) chix)) Consola :: WriteLine (quotHex valor quot, sb-gtToString ()) return 0 Quinta, 24 de agosto de 2006 12:14 PM Obrigado Christian, que parece estar funcionando . Agora o que eu preciso saber é como eu entendo e possível alterar como o serialPort manipula dados. Por exemplo, se um dispositivo de hardware está enviando código binário, o serialPort o lerá como binário ou ascii. No momento eu tenho 2 computadores conectados, um com hyperterminal e um com a aplicação C. Eu posso enviar o texto do teclado do PC que executa o hyperterminal e isto irá exibir na tela do PC que executa o aplicativo. Ele tem sido bom para o desenvolvimento da aplicação, mas eu não tenho certeza sobre se o aplicativo irá exibir os dados de entrada como binário ou ascii. Eu não tenho o dispositivo ainda como eu acabei de encomendá-lo. Eu preciso ver os dados como binários para que eu possa interpretá-lo com precisão. Também, o código que você forneceu - posso ler letras de texto, bem como números Thursday, August 24, 2006 12:15 PM Não, ele não vai ler letras, mas se você alterá-lo para ler as letras um personagem de cada vez e converter para Char, então ele vai. Nobugz apenas postou algum código que olha à primeira vista como ele fará isso para você. Quinta-feira, 24 de agosto de 2006 12:17 Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site Msdn. Se você optar por participar, o questionário on-line será apresentado a você quando você deixar o site Msdn. Gostaria de participarC / C / MFC Estou atualmente fazendo meu FYP. Eu baixei um conjunto de arquivos de cabeçalho de libxml2 com arquivos. h e arquivos. lib. Eu primeiro tentar criar um aplicativo de console do aplicativo do Windows 32 e ele funciona bem (para garantir que eu ligá-lo corretamente) Eu então cabeça fora e tentar criar um DLLs para o dispositivo inteligente, no entanto, eu retornar com os seguintes erros: Linking. 1gt Criando biblioteca Windows Mobile 6 Professional SDK (ARMV4I) Depurar / TESTTESTTEST. lib e objeto Windows Mobile 6 Professional SDK (ARMV4I) Debug / TESTTESTTEST. exp 1gtTESTTESTTEST. obj. Erro LNK2019: símbolo externo não resolvido xmlParseFile referenciado na função ExportedFunction 1gtWindows Mobile 6 Professional SDK (ARMV4I) Debug / TESTTESTTEST. dll. Erro fatal LNK1120: 1 não resolvido externo 1gtBuild log foi salvo no arquivo: // c: Documents and SettingswuMy DocumentsVisual Studio 2005ProjectsTESTTESTTESTTESTTESTTESTWindows Mobile 6 SDK Profissional (ARMV4I) DebugBuildLog. htm 1gtTESTTESTTEST - 2 erro (s), 1 aviso (s) Eu criei meu DLL como esta: include resourceppc. h include stdio. h incluir string. h incluir stdlib. h incluir xmlmemory. h incluir parser. h extern C void EXPORTAR ExportedFunction () char docname abc xmlDocPtr doc xmlNodePtr cur doc xmlParseFile (docname) Sendo noob, Eu só quero saber: 1. É possível criar uma DLL usando arquivos. lib. 2. É a minha ligação errada Qualquer ajuda de somekind será muito apreciada. Umer Aziz escreveu: Como eu aprendi com alguém que esta função usou a data 1970-01-01 00:00:00 como a base para calcular segundos em data. Mas quando eu usei ele parece que ele usa a data base como 1970-01-01 05:00:00. Eu não consigo entender isso. Localtime ajusta o tempo avaliado para o seu local (daí o turno de cinco horas). Use gmtime. ao invés. Umer Aziz escreveu: Também é possível calcular a data de segundos usando algum outro valor de data base. Por exemplo, tenho segundos a partir de 1994-01-01 00:00:00 até agora, então como calcular o tempo a partir destes segundos (segundos data base). Para usar 1994-01-01 00:00:00 como data-base, basta adicionar o valor de tempo correspondente à sua duração e então chamar gmtime e strftime) Se o Senhor Deus Todo Poderoso tivesse me consultado antes de embarcar na Criação, eu teria recomendado Algo mais simples. - Alfonso o Sábio, Rei do século XIII de Castela. Isto está indo em minhas suposições arrogantes. Você pode ter uma razão excelente porque Im completamente errado. - Iain Clarke Re: Ajuda necessária sobre c linguagem função local DavidCrow 20-Jan-09 7:12 Umer Aziz escreveu: Como eu aprendi com alguém que esta função usou a data 1970-01-01 00:00:00 como o Base para calcular segundos. Ele realmente vai voltar cerca de 21600 segundos além disso para 31-Dez-1969 1800. Ame as pessoas e usar as coisas, não amar as coisas e usar as pessoas. - Desconhecido As paredes de tijolos estão lá por uma razão. Para parar as pessoas que não querem muito mal. - Randy Pausch Re: Ajuda necessária sobre a linguagem c função local Umer Aziz 20-Jan-09 7:19 Muito obrigado pela sua resposta rápida como enviar um caminho de arquivo de dll extensão shell para um aplicativo Nitheesh George 20-Jan-09 5 : 32 Eu desenvolvendo um aplicativo que armazena os caminhos de arquivo e também tenho uma extensão de shell dll. i queria enviar um caminho de arquivo de uma dll de extensão de shell para um aplicativo através de uma mensagem de janelas registradas. é possível. Re: Como enviar um caminho de arquivo de dll de extensão shell para um aplicativo Code-o-mat 20-Jan-09 5:53 Confira WMCOPYDATA, parece que é exatamente o que você precisa. Gt O problema com os computadores é que eles fazem o que você lhes diz para fazer e não o que você quer que eles façam. Lt gt Vida: ótimos gráficos, mas o jogo sux. Lt Sutter / Alexandrescu explicação das exceções Membro 2603772 20-Jan-09 5:29 Sutter e Alexandrescu têm uma seção sobre o uso adequado de exceções C que incentiva fortemente o uso de exceções C. Estou confuso com o último item, número 75, onde sugerem evitar especificações de exceção. 1) Se você não joga, então por que se preocupar tentando pegar, que é o que os itens anteriores defendem 2) Se as especificações de exceção são ruins por que C suporta-los Pode alguém explicar o que estou perdendo Re: Sutter / Alexandrescu explicação de exceções Se você não jogar, então por que se preocupar tentando pegar, que é o que os itens anteriores advogado Não usando exceção especificações doesnt significa que você está garantindo que o seu código não lançar uma exceção - é o inverso do que - você está fazendo nenhuma garantia sobre se o código lança exceções ou não. Se um pedaço de código youre chamando não tem especificação de exceção, suponha que ele pode lançar qualquer exceção. Apenas lidar com exceções se há alguma ação que você pode executar que corrige o que causou a exceção. Qualquer outra exceção deve ser permitida para encerrar o aplicativo - se você não sabe como corrigir o que causou a exceção, então você tem problemas. Membro 2603772 escreveu: Se as especificações de exceção são ruins por que C suporta-los Theyre não é ruim per se. O ponto é que C doesnt impor-lhes ou (realmente) tomar qualquer aviso deles. Isso significa que os compiladores não verificarão que eles estão corretos, então eles são responsáveis ​​(como os comentários de código) a tornarem-se imprecisos à medida que você altera o código que descrevem, porque provavelmente não se lembrará de alterar a especificação de exceção. Re: Sutter / Alexandrescu explicação de exceções Nemanja Trifunovic 20-Jan-09 6:20 Talvez este artigo ajuda a entender as especificações de exceção e por que eles não são uma boa idéia . CListBox string wrapping nuclph 20-Jan-09 5:00 Eu só comecei a usar a biblioteca MFC juntamente com o Visual Studio 2008 para envolver meu mecanismo matemático que eu construir como um aplicativo de console. Espero que minha pergunta seja fácil de responder. Eu tenho CListBox objeto que eu preencher tempo ao tempo com mensagens de erro no catch bloco: catch (std :: exceção ex) std :: string str ex. what () mList. AddString (str. cstr ()). Às vezes, as mensagens de erro são mais longas que a largura física do objeto CListBox e, como resultado, truncadas. Tanto quanto eu vejo, objeto CListBox não tem propriedade na lista de propriedades para especificar explicitamente string / wrapping de palavra. Existem poucas propriedades como Multicolumn, Horizontal Scroll, Desativar No Scroll que não me ajudar a tornar possível para ver todo o comprimento de mensagens de erro. Tenho certeza que deve ser uma maneira fácil de fazê-lo. Espero que alguém tenha algumas sugestões / comentários sobre o assunto. Obrigado antecipadamente, nuclph. Última Atualização: 5-Out-16 17:46 Geral Notícias Sugestão Pergunta Erro Resposta Joke Praise Rant Admin Use CtrlLeft / Direita para mudar de mensagens, CtrlUp / Down para mudar de segmentos, CtrlShiftLeft / Direita Para alternar pages. sprintf Escrever dados formatados para string Composta uma string com o mesmo texto que seria impresso se formato foi usado no printf. Mas em vez de ser impresso, o conteúdo é armazenado como uma string C no buffer apontado por str. O tamanho do buffer deve ser grande o suficiente para conter toda a seqüência resultante (consulte snprintf para uma versão mais segura). Um caractere nulo de terminação é anexado automaticamente após o conteúdo. Após o parâmetro format, a função espera pelo menos tantos argumentos adicionais quanto necessário para o formato. Parâmetros str Ponteiro para um buffer onde o C-string resultante é armazenado. O buffer deve ser grande o suficiente para conter a seqüência resultante. Format C string que contém uma string de formato que segue as mesmas especificações que o formato em printf (veja printf para detalhes). (Argumentos adicionais) Dependendo da seqüência de caracteres de formato, a função pode esperar uma seqüência de argumentos adicionais, cada um contendo um valor para ser usado para substituir um especificador de formato na seqüência de caracteres de formato (ou um ponteiro para um local de armazenamento, para n). Deve haver pelo menos tantos desses argumentos quanto o número de valores especificados nos especificadores de formato. Argumentos adicionais são ignorados pela função. Valor de retorno Em caso de sucesso, o número total de caracteres escritos é retornado. Essa contagem não inclui o caractere nulo adicional anexado automaticamente no final da seqüência de caracteres. Em caso de falha, um número negativo é retornado. Exemplo Consulte também snprintf Gravação de saída formatada para buffer de tamanho (função) printf Imprimir dados formatados para stdout (função) sscanf Ler dados formatados de string (função) Nós fomos enviados um lindo presente da Brilliant Bicycles no mês passado, então decidimos fazer o único Coisa lógica Deixe-o afastado em uma caça ao tesouro A tensão era alta como as pessoas anteciparam quando a moto ficaria escondida. Finalmente, às 14h na quarta-feira. A caçada começou e as pessoas começaram a correr pelo edifício em busca da bicicleta. Foi achado rapidamente pelo afortunado Tony Gambino. Obrigado, Brilhante, pela bela moto, e parabéns Tony Na semana passada, o Diretor de Criação, Alvaro Sotomayor comemorou seu 20º aniversário de trabalhar na WK Amsterdam. Descrito como um festival de um homem, um antidepressivo andando e um homem que fala em emoções, lvaro é, sem dúvida, a alma da agência. Para marcar seu aniversário nós jogamos-lhe uma festa surpresa maciça, que começou no jardim, continuou em nosso barco da agência e terminou com dançar a noite afastado em uma festa temático tropical em Amsterdams Pllek. Foram pia coladas, gigante bananas infláveis ​​e surpresa família e amigos de todo o mundo. Tudo para honrar o nosso amado Alvaro. Mas isso não é tudo. Ao longo de seus vinte anos, Alvaro teve um impacto significativo dentro da agência e Amsterdams mais ampla cena criativa, que firmemente o estabeleceu como uma figura de proa e embaixador da indústria criativa da cidade. Fundação WKs incubadora programa O Kennedys, tornando-se o primeiro não-Holandês criativo publicidade nele para ser introduzido em ADCNs prestigiado Salão de Honras e usando sua arte para ajudar a proibição de touradas na Espanha, são apenas algumas das suas muitas realizações. Por isso, o nomeamos para o Prêmio Andreas, uma honra oficial da Câmara Municipal de Amsterdã, concedida a indivíduos por realizações excepcionais no domínio do esporte, arte, política, mídia ou educação na cidade de Amsterdã, com influência demonstrada além da cidade e das fronteiras nacionais. Em uma última surpresa, Alvaro foi apresentado com a medalha Andreas em Pllek pelo vereador do Município de Amsterdã, Pieter Litjens. Uma vez que ele percebeu que o prêmio era de verdade e Pieter não era um stripper Alvaro tinha isso a dizer: Me humilha ser reconhecido oficialmente com este prêmio e por viver meu lema diário: Live by love. Amor muda um dia mundano em um dia vale a pena estar vivo para. Quero agradecer a minha família e meus amigos pela minha festa de aniversário de 20 anos e para reverter os papéis de um dia. Eu senti o amor Quero mais de Alvaro Abaixo está um trecho do e-mail que ele enviou ao redor do escritório em seu Amsterversary e antes que ele sabia o que estava na loja para ele mais tarde no dia Era setembro de 1995, quando eu voei do aeroporto de Maui , Para LAX e de lá para Amsterdã para entrevistar em uma agência de lançamento americana que introduz Nike para o continente europeu. Como era minha primeira entrevista de trabalho oficial eu usei meu terno de veludo verde de três peças super e um bronzeado tão profundo como Jay-Z. I chegou à pitoresca cidade de Amsterdã em um dos mais glorioso verão ensolaradas dias. Ele foi 28 graus fora portanto, talvez veludo wasnt a melhor escolha de guarda-roupa. Mas a minha outra opção foi algum californiano bowling traje então eu fui para a escolha segura. Vinte anos mais tarde, hoje, o sol ainda brilha e minha vida é incrível. Estar em uma agência onde o lema é andar estúpido todos os dias você pode imaginar eu me senti em casa. E eu ainda faço, diariamente. Eu ando em estúpido e eu ainda me apaixono por este lugar e todo mundo nele. Eu me relaciono com Dori em Finding Nemo ou goldfish. Eu vou e volta este lugar pensando é um oceano. Estou surpreso como pouco mudou. E como nossas tradições persistem. Mas heck algumas coisas mudaram temos um barco E um bar e ping pong torneios Este lugar é incrível. Este lugar realmente traz o melhor em nós. Estou animado para escrever isso novamente em 2035. Acho que podemos fazer as pessoas acreditam que há esperança no mundo e convencê-los com os nossos sorrisos. Na quinta-feira, 24 de setembro, WiedenKennedy, juntamente com um punhado de outros patrocinadores locais, organizou um mini-con três em Portland, Oregon (EUA). . O evento de dia inteiro consistiu em keynotes, painéis, networking, uma sessão de ioga e, claro, coquetéis. Clique aqui para uma visão mais detalhada da formação de oradores e participantes fantásticos e inspiradores. Meron Medhanie, estrategista do WK, reflete sobre o dia. Eles me vêem. 8211 Jamie Curl Confiar em sua viagem, individualidade e seu gênio, como Intisar Abioto disse poderosamente, é um pouco mais fácil de fazer quando você é visto, ouvido e compreendido. Mas quando as pessoas reconhecem a sua sorte, em vez de seu gênio, ele apaga completamente o seu talento e trabalho duro, fazendo você se sentir como um destinatário do sucesso, em vez de um criador. (Sarah Shapiro, cineasta, diretora e criadora de Lifetime8217s Unreal) Sarah Shapiro compartilhou isso com vigor e paixão como ela bateu em um monte de temas abordados na primeira 3 Mini Conferência em Portland. O primeiro ser, nunca subestime o poder que uma pessoa tem para fazer uma mudança. Ou como Kat Gordon disse, 8220Se algo está quebrado no mundo, você pode muito bem ser a pessoa para corrigi-lo. E isso é o que ela se propôs a fazer. Kat Gordon fundou a 3 Conferência, estabelecendo uma comunidade de mulheres incríveis e manbassadors em 2017, depois de saber que percentagem representou o número de diretores criativos femininos em nossa indústria. Desde que a organização se lançou há quatro anos, o número de directores criativos femininos aumentou de 3 para 11. Mas ficou claro durante todo o dia que ainda há muito trabalho a ser feito. Como Chelsea Vandiver disse melhor, as lutas estavam lidando com são reais. Tentando superar a barreira da cuteness a ser levada a sério, e esta idéia de matrydom para o trabalho, juntamente com uma extrema culpa por não ser suficiente para o seu trabalho, família e você levou a inúmeras conversas de como você ficar nele quando Parece que tudo está empilhado. A resposta: Se você se sentir como o seu o que você tem que fazer, é a sua paixão, então você não pode desistir. É o momento em que você solta uma fantasia e se inclina para a que você está destinado, essa descoberta acontece. E realmente, aquele é o espaço que nós jogamos em o dia inteiro. (Intisar Abioto, Fotógrafo, Dançarino, Escritor, Explorador, The Black Portlanders) Ouvimos histórias poderosas sobre o que as pessoas estão criando e como as pessoas estão mudando o jogo. Mulheres como Mira Kaddoura e Sarah Shapiro que são intencionais em quem eles contratam, em vez de contratar o cara que se parece com o último cara que contratamos. Mulheres corajosas que nos desafiaram a falar quando alguém descreve uma mulher como insensível ou emocional, e em vez disso dizer coisas como 8220hmm ela realmente pensa em seus pés e é bastante apaixonado. (DeAngelo Raines, Co-Fundador Diretor de Arte de Serviço e Caridade Stratos, CEO / Fundador do Serviço) Tanto quanto todos nós prosperamos em um ambiente de apoio, Tig Notaro lembrou-nos que a última coisa que você quer é um ambiente seguro. Estar em um ambiente de 100 nutrição, você não vai realmente crescer. Então, como fazemos um equilíbrio Im não realmente certo. Podemos começar com a criação de um espaço onde todos possam compartilhar sua perspectiva. E abraçando essa estranheza, como Tig tão graciosamente faz em sua posição. Reconhecendo que eles não conseguem isso, vamos discutir isso e ter confiança que podemos passar por conversas difíceis. Ou como Charity Stratos compartilhado, estando bem com 8220healthy conflito para encontrar um novo terreno comum. Dan Wieden acrescentou que somos mais poderosos quando diversos. A melhor maneira de resolver um problema é quando há várias perspectivas na sala. A diversidade é a melhor coisa que pode acontecer à criatividade. Para colocar isso em perspectiva, Kat Gordon perguntou à platéia: "Vemos 3.000 anúncios por dia que moldam como vemos as coisas em todas as facetas da vida. Queremos que ele venha de uma perspectiva ou queremos que ela seja representativa da América A WK está se associando com a 3 Conferência para trazer um dia inspirador de badass líderes criativas para falar, colaborar e mentor na PNCA em 24 de setembro. Tig Notaro , Stand-up comic e estrela de HBOs Tig Notaro: Boyish Girl Interrompido. Será o título, ao lado de Sarah Shapiro, cineasta, diretora e criadora de Lifetimes UnREAL. A conferência abrangerá uma variedade de indústrias criativas de comunicações para entretenimento, alimentos, tecnologia e doers / makers. Cada alto-falante vai explorar como eles chegaram a onde estão, e onde eles querem ir a partir daqui. O evento acontece no espaço novo do super-rad dos PNCAs situado em 511 NW Broadway de 8:30 am - 5:30 pm. Obtenha seus ingressos e detalhes aqui: bit. ly/3percentpdx It8217s setembro, de modo que significa it8217s Bike Commute Challenge mês aqui em Oregon Uma das muitas vantagens de trabalhar em WiedenKennedy é que nós apoiamos nossos viajantes de bicicleta. Portland, afinal de contas. A aliança de transporte de bicicletas. Um grupo de defesa de moto sem fins lucrativos com sede em Portland, coloca o Bike Commute Challenge em Setembro, durante o qual as empresas competem para ter a maior percentagem de deslocamentos por bicicleta. WK é sempre um corredor na competição (we8217ll pegá-lo este ano, Reed College). Nós usamos o mês de setembro para mostrar o nosso amor extra de bicicleta comutadores, organizando festas e workshops, pequenos-almoços semanais e prêmios de sorteio. (Crédito do cartaz ao fim de Garrett do estúdio de WK)

No comments:

Post a Comment